diff options
author | 1997-03-27 23:26:28 +0000 | |
---|---|---|
committer | 1997-03-27 23:26:28 +0000 | |
commit | 64800010c2b33848e3e915550907b148ecf62633 (patch) | |
tree | ea170159065eea5fa18667a6e02cf43caee0d5da /lib/libc | |
parent | better doc (diff) | |
download | wireguard-openbsd-64800010c2b33848e3e915550907b148ecf62633.tar.xz wireguard-openbsd-64800010c2b33848e3e915550907b148ecf62633.zip |
Make this code sane.
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/crypt/crypt.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/libc/crypt/crypt.c b/lib/libc/crypt/crypt.c index e28e94e42f6..c468d301a26 100644 --- a/lib/libc/crypt/crypt.c +++ b/lib/libc/crypt/crypt.c @@ -50,7 +50,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: crypt.c,v 1.7 1997/02/13 16:58:44 provos Exp $"; +static char rcsid[] = "$OpenBSD: crypt.c,v 1.8 1997/03/27 23:26:28 downsj Exp $"; #endif /* LIBC_SCCS and not lint */ #include <sys/types.h> @@ -621,7 +621,7 @@ crypt(key, setting) * and padding with zeros. */ q = (u_char *) keybuf; - while (q - (u_char *) keybuf - 8) { + while ((q - (u_char *) keybuf) <= sizeof(keybuf)) { if (*q++ = *key << 1) key++; } @@ -650,7 +650,8 @@ crypt(key, setting) * And XOR with the next 8 characters of the key. */ q = (u_char *) keybuf; - while (q - (u_char *) keybuf - 8 && *key) + while (((q - (u_char *) keybuf) <= sizeof(keybuf)) && + *key) *q++ ^= *key++ << 1; if (des_setkey((u_char *) keybuf)) |