diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php
index 4d2d1ad..727e5a2 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuNodeTest.php
@@ -79,6 +79,10 @@ class MenuNodeTest extends WebTestBase {
       'menu[enabled]' => 1,
     );
     $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
+    // Assert that node submission failed due to blank menu link title.
+    $site_name = config('system.site')->get('name');
+    $this->assertTitle(t('Edit Basic page @node-title | @site-name', array('@node-title' => $node_title, '@site-name' => $site_name)));
+    $this->assertText('Missing link title.');
     // Assert that there is no link for the node.
     $this->drupalGet('');
     $this->assertNoLink($node_title);
diff --git a/core/modules/menu/menu.module b/core/modules/menu/menu.module
index cee4ba5..6a34676 100644
--- a/core/modules/menu/menu.module
+++ b/core/modules/menu/menu.module
@@ -726,6 +726,7 @@ function menu_form_node_form_alter(&$form, $form_state) {
     '#default_value' => $link['weight'],
     '#description' => t('Menu links with smaller weights are displayed before links with larger weights.'),
   );
+  $form['#validate'][] = 'menu_node_link_validate';
 }
 
 /**
@@ -850,3 +851,13 @@ function menu_library_info() {
 
   return $libraries;
 }
+
+/**
+ * Validate node link form.
+ *
+ */
+function menu_node_link_validate ($form, $form_state) {
+  if ($form_state['values']['menu']['enabled'] == TRUE && empty($form_state['values']['menu']['link_title'])) {
+    form_error($form['menu']['link']['link_title'], t('Missing link title.'));
+  }
+}
\ No newline at end of file
