Index: ../modules/favorite_nodes/favorite_nodes.module
===================================================================
--- ../modules/favorite_nodes/favorite_nodes.module	(revision 20)
+++ ../modules/favorite_nodes/favorite_nodes.module	(working copy)
@@ -3,6 +3,7 @@
 
 define('FAVORITE_NODES_NODE_TYPE',       'favorite_nodes_node_type_');
 define('FAVORITE_NODES_PERM_ADD',        'create favorite nodes');
+define('FAVORITE_NODES_PERM_ADD_OWN',    'create favorite on own nodes');
 define('FAVORITE_NODES_PERM_VIEW',       'view favorite nodes');
 define('FAVORITE_NODES_PERM_ADMINISTER', 'administer favorite nodes');
 define('FAVORITE_NODES_BLOCK',           'favorite_nodes_block_type_');
@@ -25,7 +26,7 @@
 }
 
 function favorite_nodes_perm() {
-  return array(FAVORITE_NODES_PERM_ADD, FAVORITE_NODES_PERM_VIEW, FAVORITE_NODES_PERM_ADMINISTER);
+  return array(FAVORITE_NODES_PERM_ADD_OWN, FAVORITE_NODES_PERM_ADD, FAVORITE_NODES_PERM_VIEW, FAVORITE_NODES_PERM_ADMINISTER);
 }
 
 /**
@@ -266,7 +267,8 @@
   $links = array();
   if ($type == 'node' && !$teaser) {
     if (variable_get(FAVORITE_NODES_NODE_TYPE . $node->type, 0)) {
-      if (user_access(FAVORITE_NODES_PERM_ADD)) {
+      if (user_access(FAVORITE_NODES_PERM_ADD) AND
+          (!$user->uid OR $user->uid != $node->uid OR ($user->uid == $node->uid AND user_access(FAVORITE_NODES_PERM_ADD_OWN)))) {
         if (!_favorite_nodes_check($node->nid)) {
           $links[] = array('title' => t('add to favorites'), 'href' => 'favorite_nodes/add/'. $node->nid);
         }
