This patch brings sufficient intervening fixes forward to apply Todd's diff
on an -rOPENBSD_5_8 checkout (offset of 17 lines).

The resulting skeyinit works on 5.8-stable. -s works, and -n works with -s.


Richard

-------

--- usr.bin/skeyinit/skeyinit.c.orig    Sat Nov 28 21:32:40 2015
+++ usr.bin/skeyinit/skeyinit.c Sat Nov 28 22:10:35 2015
@@ -324,6 +324,7 @@
     char *buf, size_t bufsiz)
 {
        char *p, newseed[SKEY_MAX_SEED_LEN + 2];
+       const char *errstr;
        int i, n;

        (void)puts("You need the 6 words generated from the \"skey\" command.");
@@ -335,11 +336,11 @@
                    SKEY_MAX_SEQ);
                (void)fgets(buf, bufsiz, stdin);
                clearerr(stdin);
-               n = atoi(buf);
-               if (n > 0 && n < SKEY_MAX_SEQ)
+               n = strtonum(buf, 1, SKEY_MAX_SEQ-1, &errstr);
+               if (!errstr)
                        break;  /* Valid range */
-               (void)fprintf(stderr, "ERROR: Count must be between 1 and %d\n",
-                            SKEY_MAX_SEQ);
+               fprintf(stderr, "ERROR: Count must be between 1 and %d\n",
+                   SKEY_MAX_SEQ - 1);
        }

        for (i = 0; ; i++) {

Reply via email to