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++) {