diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index bdd5051..7e49dd2 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1957,7 +1957,7 @@ function _node_revision_access($node, $op = 'view', $account = NULL) {
     // different revisions so there is no need for a separate database check.
     // Also, if you try to revert to or delete the current revision, that's
     // not good.
-    if ($is_current_revision && (db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() == 1 || $op == 'update' || $op == 'delete')) {
+    if ($is_current_revision && ($op == 'update' || $op == 'delete' || db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() == 1)) {
       $access[$cid] = FALSE;
     }
     elseif (user_access('administer nodes', $account)) {
diff --git a/core/modules/node/node.test b/core/modules/node/node.test
index 058e0e7..f5e98a6 100644
--- a/core/modules/node/node.test
+++ b/core/modules/node/node.test
@@ -2394,6 +2394,7 @@ class NodeRevisionPermissionsTestCase extends NodeWebTestCase {
    * Tests the _node_revision_access() function.
    */
   function testNodeRevisionAccess() {
+    $current_account = $GLOBALS['user'];
     $revision = $this->node_revisions[1];
 
     $parameters = array(
@@ -2403,14 +2404,25 @@ class NodeRevisionPermissionsTestCase extends NodeWebTestCase {
 
     $permutations = $this->generatePermutations($parameters);
     foreach ($permutations as $case) {
+      $path_end = $case['op'] == 'update' ? 'revert' : $case['op'];
+      $this->drupalLogin($case['account']);
       if (!empty($case['account']->is_admin) || $case['op'] == $case['account']->op) {
         $this->assertTrue(_node_revision_access($revision, $case['op'], $case['account']), "{$this->map[$case['op']]} granted.");
+        // Test that access to the corresponding path works.
+        $this->drupalGet("node/{$revision->nid}/revisions/{$revision->vid}/$path_end");
+        $this->assertText($revision->title, "Access allowed for $path_end for administer.");
       }
       else {
         $this->assertFalse(_node_revision_access($revision, $case['op'], $case['account']), "{$this->map[$case['op']]} not granted.");
+        // Test that access is denied for corresponding path.
+        $this->drupalGet("node/{$revision->nid}/revisions/{$revision->vid}/$path_end");
+        $this->assertText('Access denied', "Access denied for $path_end.");
       }
     }
 
+    // Reset the current user back for further tests.
+    $GLOBALS['user'] = $current_account;
+
     // Test that access is FALSE for a node administrator with an invalid $node
     // or $op parameters.
     $admin_account = $this->accounts['admin'];
@@ -2422,6 +2434,26 @@ class NodeRevisionPermissionsTestCase extends NodeWebTestCase {
     $GLOBALS['user'] = $admin_account;
     $this->assertTrue(_node_revision_access($revision, 'view'), '_node_revision_access() returns TRUE when used with global user.');
     $GLOBALS['user'] = $original_user;
+
+    // Test that user cannot delete or update current revision.
+    $last_revision = end($this->node_revisions);
+    $this->assertFalse(_node_revision_access($last_revision, 'update', $this->accounts['admin']), "_node_revision_access returns FALSE when used with current revision and revert.");
+    $this->assertFalse(_node_revision_access($last_revision, 'delete', $this->accounts['admin']), "_node_revision_access returns FALSE when used with current revision and delete.");
+
+    // Make sure user cannot access the delete page for last revision.
+    $this->drupalGet("node/{$last_revision->nid}/revisions/{$last_revision->vid}/delete");
+    $this->assertText('Access denied', 'Access is denied for the user accessing the delete page for last revision.');
+
+    // Create a node with a single revision and make sure cannot view, update,
+    // or delete.
+    $node_with_one_revision = $this->drupalCreateNode();
+    $this->assertFalse(_node_revision_access($node_with_one_revision, 'view', $this->accounts['admin']), "_node_revision_access returns FALSE when viewing node with one revision.");
+    $this->assertFalse(_node_revision_access($node_with_one_revision, 'update', $this->accounts['admin']), "_node_revision_access returns FALSE when reverting node with one revision.");
+    $this->assertFalse(_node_revision_access($node_with_one_revision, 'delete', $this->accounts['admin']), "_node_revision_access returns FALSE when deleting node with one revision.");
+
+    // Make sure cannot access the revisions tab when one revision.
+    $this->drupalGet("node/{$node_with_one_revision->nid}/revisions");
+    $this->assertText('Access denied', 'Access is denied for the user at at revisions page for node with one revision.');
   }
 }
 
