diff options
author | downsj <> | 1997-03-27 23:26:28 +0000 |
---|---|---|
committer | downsj <> | 1997-03-27 23:26:28 +0000 |
commit | b7b9498c3fc08dd684d7a031bf51fd81b8de5cf7 (patch) | |
tree | 7fcc8f6d988aed05e453e4a6ca3a3b6724c9dab9 /src/lib/libc/crypt | |
parent | 202ac1b65e6007bccdc007800f20acd4f8145911 (diff) | |
download | openbsd-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.c | 7 |
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) |
53 | static char rcsid[] = "$OpenBSD: crypt.c,v 1.7 1997/02/13 16:58:44 provos Exp $"; | 53 | static 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)) |