diff --git a/includes/menu.inc b/includes/menu.inc
index 05ecac0..d4b4fc2 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -1499,7 +1499,9 @@ function menu_tree_check_access(&$tree, $node_links = array()) {
     $nids = array_keys($node_links);
     $select = db_select('node', 'n');
     $select->addField('n', 'nid');
-    $select->condition('n.status', 1);
+    if (!user_access('bypass node access')) {
+      $select->condition('n.status', 1);
+    }
     $select->condition('n.nid', $nids, 'IN');
     $select->addTag('node_access');
     $nids = $select->execute()->fetchCol();
diff --git a/modules/menu/menu.test b/modules/menu/menu.test
index bb792ee..3857244 100644
--- a/modules/menu/menu.test
+++ b/modules/menu/menu.test
@@ -604,6 +604,49 @@ class MenuTestCase extends DrupalWebTestCase {
       $this->assertText(t('Menus'), 'Add menu node was displayed');
     }
   }
+
+  /**
+   * Tests that menu items pointing to unpublished nodes are editable.
+   */
+  function testUnpublishedNodeMenuItem() {
+    $admin_user = $this->drupalCreateUser(array(
+      'bypass node access',
+      'administer content types',
+      'administer menu',
+    ));
+    $this->drupalLogin($admin_user);
+
+    $title = $this->randomName();
+    // Create an unpublished node.
+    $node = $this->drupalCreateNode(array(
+      'type' => 'article',
+      'title' => $title,
+      'status' => NODE_NOT_PUBLISHED,
+    ));
+    $edit = array(
+      'link_path' => 'node/' . $node->nid,
+      'link_title' => $title,
+      'description' => '',
+      'enabled' => TRUE,
+      'expanded' => TRUE,
+      'parent' => 'navigation:0',
+      'weight' => '0',
+    );
+    // Add menu link.
+    $this->drupalPost('admin/structure/menu/manage/navigation/add', $edit, t('Save'));
+    // See that we can view the link in the manage area.
+    $this->drupalGet('admin/structure/menu/manage/navigation');
+    $this->assertText($title, "Menu link to unpublished node is visible to users with 'bypass node access' permission.");
+    $this->drupalLogout();
+
+    $this->med_user = $this->drupalCreateUser(array('administer menu'));
+    // Login with user without bypass node access and confirm item is not editable.
+    $this->drupalLogin($this->med_user);
+    // Default menu is navigation.
+    $this->drupalGet('admin/structure/menu/manage/navigation');
+    $this->assertNoText($title, "Menu link to unpublished node is only visible to users with 'bypass node access' permission.");
+  }
+
 }
 
 /**
@@ -758,4 +801,5 @@ class MenuNodeTestCase extends DrupalWebTestCase {
     $options = $this->xpath('//select[@id=:id]//option[@value=:option]', array(':id' => $id, ':option' => $option));
     return $this->assertTrue(isset($selects[0]) && !isset($options[0]), $message ? $message : t('Option @option for field @id does not exist.', array('@option' => $option, '@id' => $id)), t('Browser'));
   }
+
 }
