summaryrefslogtreecommitdiff
path: root/src/lib/libc/crypt
diff options
context:
space:
mode:
authorotto <>2004-12-22 17:33:25 +0000
committerotto <>2004-12-22 17:33:25 +0000
commit1aac940d9977aaf0d04bb4eafe4cc1c7acfe71b5 (patch)
treeb8289097220df3ff10e7242c9a53b71727238ccd /src/lib/libc/crypt
parent48524b4aeb5ceb3b1634040fb37ae098ea229c4c (diff)
downloadopenbsd-1aac940d9977aaf0d04bb4eafe4cc1c7acfe71b5.tar.gz
openbsd-1aac940d9977aaf0d04bb4eafe4cc1c7acfe71b5.tar.bz2
openbsd-1aac940d9977aaf0d04bb4eafe4cc1c7acfe71b5.zip
Test the upper limit for the max # of rounds to, to avoid wrapping and ending
up with a low number of rounds. Spotted by mpech@; ok mpech@ millert@
Diffstat (limited to 'src/lib/libc/crypt')
-rw-r--r--src/lib/libc/crypt/bcrypt.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/libc/crypt/bcrypt.c b/src/lib/libc/crypt/bcrypt.c
index 95251db1cd..6e1ae04e1b 100644
--- a/src/lib/libc/crypt/bcrypt.c
+++ b/src/lib/libc/crypt/bcrypt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bcrypt.c,v 1.18 2003/08/07 00:28:45 deraadt Exp $ */ 1/* $OpenBSD: bcrypt.c,v 1.19 2004/12/22 17:33:25 otto Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de> 4 * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
@@ -164,6 +164,8 @@ bcrypt_gensalt(u_int8_t log_rounds)
164 164
165 if (log_rounds < 4) 165 if (log_rounds < 4)
166 log_rounds = 4; 166 log_rounds = 4;
167 else if (log_rounds > 31)
168 log_rounds = 31;
167 169
168 encode_salt(gsalt, csalt, BCRYPT_MAXSALT, log_rounds); 170 encode_salt(gsalt, csalt, BCRYPT_MAXSALT, log_rounds);
169 return gsalt; 171 return gsalt;
@@ -212,7 +214,10 @@ bcrypt(const char *key, const char *salt)
212 return error; 214 return error;
213 215
214 /* Computer power doesn't increase linear, 2^x should be fine */ 216 /* Computer power doesn't increase linear, 2^x should be fine */
215 if ((rounds = (u_int32_t) 1 << (logr = atoi(salt))) < BCRYPT_MINROUNDS) 217 logr = atoi(salt);
218 if (logr > 31)
219 return error;
220 if ((rounds = (u_int32_t) 1 << logr) < BCRYPT_MINROUNDS)
216 return error; 221 return error;
217 222
218 /* Discard num rounds + "$" identifier */ 223 /* Discard num rounds + "$" identifier */