Module Name:    src
Committed By:   bouyer
Date:           Sun Feb 14 14:01:08 UTC 2010

Modified Files:
        src/sys/arch/i386/stand/boot [netbsd-5]: boot2.c

Log Message:
Pull up following revision(s) (requested by hubertf in ticket #1304):
        sys/arch/i386/stand/boot/boot2.c: revision 1.48
When a password is set for the bootloader ("installboot -o password=..."),
it currently complains about an unknown command and prints a usage if the
password is entered wrong:
         ...
         Choose an option; RETURN for default; SPACE to stop countdown.
         Option 1 will be chosen in 0 seconds.
         Password: *
         Password: *
         Password: *
         unknown command
         commands are:
         boot [xdNx:][filename] [-12acdqsvxz]
              (ex. "hd0a:netbsd.old -s"
         ls [path]
         dev xd[N[x]]:
         consdev {pc|com[0123]|com[0123]kbd|auto}
         modules {enabled|disabled}
         load {path_to_module}
         multiboot [xdNx:][filename] [<args>]
         help|?
         quit
         Choose an option; RETURN for default; SPACE to stop countdown.
         Option 1 will be chosen in 0 seconds.
         ...
This is confusing, plus someone may use it to determine bits of
information about the system. What should happen instead is that the user
is informed that the password is wrong:
         ...
         Choose an option; RETURN for default; SPACE to stop countdown.
         Option 1 will be chosen in 0 seconds.
         Password: ****
         Password: ****
         Password: ****
         Wrong password.
         Choose an option; RETURN for default; SPACE to stop countdown.
         ...
Implement the latter behaviour.


To generate a diff of this commit:
cvs rdiff -u -r1.38.4.1 -r1.38.4.2 src/sys/arch/i386/stand/boot/boot2.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/i386/stand/boot/boot2.c
diff -u src/sys/arch/i386/stand/boot/boot2.c:1.38.4.1 src/sys/arch/i386/stand/boot/boot2.c:1.38.4.2
--- src/sys/arch/i386/stand/boot/boot2.c:1.38.4.1	Sun Oct 18 16:41:28 2009
+++ src/sys/arch/i386/stand/boot/boot2.c	Sun Feb 14 14:01:08 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: boot2.c,v 1.38.4.1 2009/10/18 16:41:28 bouyer Exp $	*/
+/*	$NetBSD: boot2.c,v 1.38.4.2 2010/02/14 14:01:08 bouyer Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -664,11 +664,23 @@
 #else
 		c = awaitkey((bootconf.timeout < 0) ? 0 : bootconf.timeout, 1);
 #endif
-		if ((c != '\r') && (c != '\n') && (c != '\0') &&
-		    ((boot_params.bp_flags & X86_BP_FLAGS_PASSWORD) == 0
-		     || check_password(boot_params.bp_password))) {
-			printf("type \"?\" or \"help\" for help.\n");
+		if ((c != '\r') && (c != '\n') && (c != '\0')) {
+		    if ((boot_params.bp_flags & X86_BP_FLAGS_PASSWORD) == 0) {
+			/* do NOT ask for password */
 			bootmenu(); /* does not return */
+		    } else {
+			/* DO ask for password */
+			if (check_password(boot_params.bp_password)) {
+			    /* password ok */
+			    printf("type \"?\" or \"help\" for help.\n");
+			    bootmenu(); /* does not return */
+			} else {
+			    /* bad password */
+			    printf("Wrong password.\n");
+			    currname = 0;
+			    continue;
+			}
+		    }
 		}
 
 		/*

Reply via email to