From 6e172aaf1a8d7ea2969671c1b777fedf08359e8e Mon Sep 17 00:00:00 2001 From: tedu <> Date: Tue, 24 Feb 2015 19:19:32 +0000 Subject: [PATCH] Set errno to EINVAL, instead of letting ERANGE escape out. Printing strerror() in that case will say result too large, even if rounds is actually too small. invalid is less specific, but less incorrect. ok millert --- src/lib/libc/crypt/cryptutil.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/libc/crypt/cryptutil.c b/src/lib/libc/crypt/cryptutil.c index c3ba08f9..75c48c52 100644 --- a/src/lib/libc/crypt/cryptutil.c +++ b/src/lib/libc/crypt/cryptutil.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cryptutil.c,v 1.8 2015/01/15 17:32:43 chl Exp $ */ +/* $OpenBSD: cryptutil.c,v 1.9 2015/02/24 19:19:32 tedu Exp $ */ /* * Copyright (c) 2014 Ted Unangst * @@ -69,8 +69,10 @@ crypt_newhash(const char *pass, const char *pref, char *hash, size_t hashlen) rounds = bcrypt_autorounds(); } else { rounds = strtonum(pref + 9, 4, 31, &errstr); - if (errstr) + if (errstr) { + errno = EINVAL; goto err; + } } rv = bcrypt_newhash(pass, rounds, hash, hashlen);