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; + } + } } /*