--- modules/node/node.module	2011-01-03 18:03:54.000000000 +0000
+++ modules/node/node.module	2011-04-09 16:12:02.000000000 +0100
@@ -2925,6 +2925,12 @@ function node_node_access($node, $op, $a
       return NODE_ACCESS_ALLOW;
     }
 
+    if ($op == 'view') {
+      if (user_access('view unpublished ' . $type . ' content', $account)  && !$node->status) {
+        return NODE_ACCESS_ALLOW;
+      }
+    }
+
     if ($op == 'update') {
       if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid == $node->uid))) {
         return NODE_ACCESS_ALLOW;
@@ -2964,6 +2970,9 @@ function node_list_permissions($type) {
     "edit any $type content" => array(
       'title' => t('%type_name: Edit any content', array('%type_name' => $info->name)),
     ),
+    "view unpublished $type content" => array(
+      'title' => t('%type_name: View unpublished content', array('%type_name' => $info->name)),
+    ),
     "delete own $type content" => array(
       'title' => t('%type_name: Delete own content', array('%type_name' => $info->name)),
     ),
