summaryrefslogtreecommitdiff
path: root/src/lib/libc/crypt
diff options
context:
space:
mode:
authordownsj <>1997-03-27 23:26:28 +0000
committerdownsj <>1997-03-27 23:26:28 +0000
commitb7b9498c3fc08dd684d7a031bf51fd81b8de5cf7 (patch)
tree7fcc8f6d988aed05e453e4a6ca3a3b6724c9dab9 /src/lib/libc/crypt
parent202ac1b65e6007bccdc007800f20acd4f8145911 (diff)
downloadopenbsd-b7b9498c3fc08dd684d7a031bf51fd81b8de5cf7.tar.gz
openbsd-b7b9498c3fc08dd684d7a031bf51fd81b8de5cf7.tar.bz2
openbsd-b7b9498c3fc08dd684d7a031bf51fd81b8de5cf7.zip
Make this code sane.
Diffstat (limited to 'src/lib/libc/crypt')
-rw-r--r--src/lib/libc/crypt/crypt.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/libc/crypt/crypt.c b/src/lib/libc/crypt/crypt.c
index e28e94e42f..c468d301a2 100644
--- a/src/lib/libc/crypt/crypt.c
+++ b/src/lib/libc/crypt/crypt.c
@@ -50,7 +50,7 @@
50 */ 50 */
51 51
52#if defined(LIBC_SCCS) && !defined(lint) 52#if defined(LIBC_SCCS) && !defined(lint)
53static char rcsid[] = "$OpenBSD: crypt.c,v 1.7 1997/02/13 16:58:44 provos Exp $"; 53static char rcsid[] = "$OpenBSD: crypt.c,v 1.8 1997/03/27 23:26:28 downsj Exp $";
54#endif /* LIBC_SCCS and not lint */ 54#endif /* LIBC_SCCS and not lint */
55 55
56#include <sys/types.h> 56#include <sys/types.h>
@@ -621,7 +621,7 @@ crypt(key, setting)
621 * and padding with zeros. 621 * and padding with zeros.
622 */ 622 */
623 q = (u_char *) keybuf; 623 q = (u_char *) keybuf;
624 while (q - (u_char *) keybuf - 8) { 624 while ((q - (u_char *) keybuf) <= sizeof(keybuf)) {
625 if (*q++ = *key << 1) 625 if (*q++ = *key << 1)
626 key++; 626 key++;
627 } 627 }
@@ -650,7 +650,8 @@ crypt(key, setting)
650 * And XOR with the next 8 characters of the key. 650 * And XOR with the next 8 characters of the key.
651 */ 651 */
652 q = (u_char *) keybuf; 652 q = (u_char *) keybuf;
653 while (q - (u_char *) keybuf - 8 && *key) 653 while (((q - (u_char *) keybuf) <= sizeof(keybuf)) &&
654 *key)
654 *q++ ^= *key++ << 1; 655 *q++ ^= *key++ << 1;
655 656
656 if (des_setkey((u_char *) keybuf)) 657 if (des_setkey((u_char *) keybuf))