=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/x99token/x99token.c,v retrieving revision 1.8 retrieving revision 1.9 diff -c -r1.8 -r1.9 *** src/usr.bin/x99token/x99token.c 2010/10/15 10:18:42 1.8 --- src/usr.bin/x99token/x99token.c 2013/11/27 00:13:22 1.9 *************** *** 1,4 **** ! /* $OpenBSD: x99token.c,v 1.8 2010/10/15 10:18:42 jsg Exp $ */ /* * X9.9 calculator --- 1,4 ---- ! /* $OpenBSD: x99token.c,v 1.9 2013/11/27 00:13:22 deraadt Exp $ */ /* * X9.9 calculator *************** *** 99,115 **** for (i = 0; i < 8; ++i) { if (!*b) fprintf(stderr, "%s: invalid key\n", buf); ! while (isdigit(*b)) key[i] = key[i] << 3 | (*b++ - '0'); ! while (*b && !isdigit(*b)) ++b; } } else { for (i = 0; i < 16; ++i) { int d; ! if (islower(buf[i])) ! buf[i] = toupper(buf[i]); if (buf[i] >= '0' && buf[i] <= '9') d = buf[i] - '0'; else if (buf[i] >= 'A' && buf[i] <= 'F') --- 99,115 ---- for (i = 0; i < 8; ++i) { if (!*b) fprintf(stderr, "%s: invalid key\n", buf); ! while (isdigit((unsigned char)*b)) key[i] = key[i] << 3 | (*b++ - '0'); ! while (*b && !isdigit((unsigned char)*b)) ++b; } } else { for (i = 0; i < 16; ++i) { int d; ! if (islower((unsigned char)buf[i])) ! buf[i] = toupper((unsigned char)buf[i]); if (buf[i] >= '0' && buf[i] <= '9') d = buf[i] - '0'; else if (buf[i] >= 'A' && buf[i] <= 'F') *************** *** 125,131 **** /* XXX - should warn on non-space or non-digit */ readpassphrase("Enter Pin: ", buf, sizeof(buf), 0); for (i = 0, pin = 0; buf[i] && buf[i] != '\n'; ++i) ! if (isdigit(buf[i])) pin = pin * 16 + buf[i] - '0' + 1; if ((pin & 0xffff0000) == 0) --- 125,131 ---- /* XXX - should warn on non-space or non-digit */ readpassphrase("Enter Pin: ", buf, sizeof(buf), 0); for (i = 0, pin = 0; buf[i] && buf[i] != '\n'; ++i) ! if (isdigit((unsigned char)buf[i])) pin = pin * 16 + buf[i] - '0' + 1; if ((pin & 0xffff0000) == 0)