]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/normal/main.c: Don't drop to rescue console in
authorVladimir Serbinenko <phcoder@gmail.com>
Sun, 21 Sep 2014 16:51:09 +0000 (18:51 +0200)
committerVladimir Serbinenko <phcoder@gmail.com>
Sun, 21 Sep 2014 16:51:09 +0000 (18:51 +0200)
case of password-protected prompt and no menu entries.

ChangeLog
grub-core/normal/main.c
grub-core/normal/menu.c
grub-core/normal/menu_entry.c
grub-core/tests/cmdline_cat_test.c
include/grub/normal.h

index 6d4e295146df61b5704db7caeee61dec4fc84617..002461c64773a857c84d52d27113baf08511b3ab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2014-09-21  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/normal/main.c: Don't drop to rescue console in
+       case of password-protected prompt and no menu entries.
+
 2014-09-21  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/commands/keylayouts.c: Ignore unknown keys.
index 3a926fc5fa9eccef9968d524eb710a7e28f5fee7..c41f175bd9f33fe3a1f032ae25079ac58913ce89 100644 (file)
@@ -302,7 +302,7 @@ grub_enter_normal_mode (const char *config)
   nested_level++;
   grub_normal_execute (config, 0, 0);
   grub_boot_time ("Entering shell");
-  grub_cmdline_run (0);
+  grub_cmdline_run (0, 1);
   nested_level--;
   if (grub_normal_exit_level)
     grub_normal_exit_level--;
@@ -424,11 +424,15 @@ grub_normal_read_line (char **line, int cont,
 }
 
 void
-grub_cmdline_run (int nested)
+grub_cmdline_run (int nested, int force_auth)
 {
   grub_err_t err = GRUB_ERR_NONE;
 
-  err = grub_auth_check_authentication (NULL);
+  do
+    {
+      err = grub_auth_check_authentication (NULL);
+    }
+  while (err && force_auth);
 
   if (err)
     {
index b47991ababa4693e455a28e845237c13c9d10487..719e2fb1c260b16d96cea2b787d7f7e592b428b7 100644 (file)
@@ -773,7 +773,7 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
 
            case 'c':
              menu_fini ();
-             grub_cmdline_run (1);
+             grub_cmdline_run (1, 0);
              goto refresh;
 
            case 'e':
index b485df821226fb4fe5ded3c25bba888e882ca087..62c7e16274b78df4cd7bf009f069a0cff5871a38 100644 (file)
@@ -1396,7 +1396,7 @@ grub_menu_entry_run (grub_menu_entry_t entry)
 
        case GRUB_TERM_CTRL | 'c':
        case GRUB_TERM_KEY_F2:
-         grub_cmdline_run (1);
+         grub_cmdline_run (1, 0);
          goto refresh;
 
        case GRUB_TERM_CTRL | 'x':
index c3de5c464084381ee17cbe8383753fb7b9438be1..f1e21439e2be229d386cb310d62164fc9a5f4f92 100644 (file)
@@ -109,7 +109,7 @@ cmdline_cat_test (void)
       grub_video_checksum ("cmdline_cat");
 
       if (!grub_test_use_gfxterm ())
-       grub_cmdline_run (1);
+       grub_cmdline_run (1, 0);
 
       grub_test_use_gfxterm_end ();
 
index c4ab193b3f44edb62ba2c07813ea73af9f49da40..218cbabccafb1629753950afd3540fe5d1a4a6c2 100644 (file)
@@ -66,7 +66,7 @@ void grub_menu_init_page (int nested, int edit,
                          struct grub_term_output *term);
 void grub_normal_init_page (struct grub_term_output *term, int y);
 char *grub_file_getline (grub_file_t file);
-void grub_cmdline_run (int nested);
+void grub_cmdline_run (int nested, int force_auth);
 
 /* Defined in `cmdline.c'.  */
 char *grub_cmdline_get (const char *prompt);