Index: per-content-type-perms.patch
===================================================================
Index: clone.module
===================================================================
--- clone.module	(revision 689)
+++ clone.module	(working copy)
@@ -23,7 +23,12 @@
  * Implementation of hook_perm().
  */
 function clone_perm() {
-  return array('clone node', 'clone own nodes');
+  $perms = array('clone node', 'clone own nodes');
+  foreach (node_get_types() as $type) {
+    $name = check_plain($type->type);
+    $perms[] = "clone {$name} nodes";
+  }
+  return $perms;
 }
 
 /**
@@ -54,7 +59,11 @@
 function clone_access($node) {
   global $user;
   // Check basic permissions first.
-  $access = (user_access('clone node') || ($user->uid && ($node->uid == $user->uid) && user_access('clone own nodes')));
+  $type = check_plain($node->type);
+  $access = (
+    user_access('clone node') ||
+    ($user->uid && ($node->uid == $user->uid) && user_access('clone own nodes')) ||
+    user_access("clone {$type} nodes"));
   // Make sure the user can view the original node content.
   $access = $access && node_access('view', $node);
   // Check additional conditions
