If I type the wrong password into bioctl at boot, disks don't exist, 
filesystems don't get mounted, and generally lots of things go wrong.  All 
I need is a second chance to remind me to type the right password.

Index: bioctl.c
===================================================================
RCS file: /home/tedu/cvs/src/sbin/bioctl/bioctl.c,v
retrieving revision 1.98
diff -u -r1.98 bioctl.c
--- bioctl.c    1 Dec 2010 19:40:18 -0000       1.98
+++ bioctl.c    13 Jan 2011 23:47:24 -0000
@@ -699,6 +699,7 @@
        int                     rv, no_dev, fd;
        dev_t                   *dt;
        u_int16_t               min_disks = 0;
+       int                     retry = 0;
 
        if (!dev_list)
                errx(1, "no devices specified");
@@ -738,6 +739,7 @@
        if (level == 'C' && no_dev != min_disks)
                errx(1, "not exactly one partition");
 
+again:
        memset(&create, 0, sizeof(create));
        create.bc_cookie = bl.bl_cookie;
        create.bc_level = level;
@@ -802,8 +804,14 @@
        memset(&kdfinfo, 0, sizeof(kdfinfo));
        memset(&create, 0, sizeof(create));
        if (rv == -1) {
-               if (errno == EPERM)
+               if (errno == EPERM) {
+                       if (!retry) {
+                               warnx("Incorrect passphrase. Try again.");
+                               retry = 1;
+                               goto again;
+                       }
                        errx(1, "Incorrect passphrase");
+               }
                err(1, "BIOCCREATERAID");
        }

Reply via email to