Security Fix This patch prevents an unauthorized user from locking or unlocking a node. diff -r -u checkout.orig/checkout.module checkout/checkout.module --- checkout.orig/checkout.module 2009-05-08 12:39:01.000000000 -0500 +++ checkout/checkout.module 2009-05-08 12:45:47.000000000 -0500 @@ -207,17 +207,22 @@ $previous_nid = checkout_get_nid($referer); $current_nid = checkout_get_nid($_GET['q']); + // Check whether to release a previously edited node. if ($previous_nid && (!$current_nid || $current_nid != $previous_nid)) { - checkout_release($previous_nid, $uid); + if (node_access('edit', $previous_nid)){ + checkout_release($previous_nid, $uid); + } } // Check whether to lock the current node. if ($current_nid && (!$previous_nid || $previous_nid != $current_nid)) { // Try to lock the node. - if (!checkout_node($current_nid, $uid)) { - // Node already locked: send back to refering page. - drupal_goto(referer_uri()); + if (node_access('edit', $current_nid)){ + if (!checkout_node($current_nid, $uid)) { + // Node already locked: send back to refering page. + drupal_goto(referer_uri()); + } } } }