The UI_add_{input,verify}_string() functions want a length not including
authortb <tb@openbsd.org>
Tue, 14 Aug 2018 17:51:36 +0000 (17:51 +0000)
committertb <tb@openbsd.org>
Tue, 14 Aug 2018 17:51:36 +0000 (17:51 +0000)
commitddcb65f9746809d209494b262e6a032f4cb86bfe
tree4d1699be781e51ea422fd733f794e1f9b991511e
parentc7aa09baa016b4e2ad61ea5f994babd2f9e91a44
The UI_add_{input,verify}_string() functions want a length not including
the terminating NUL. EVP_read_pw_string_min() got this wrong, leading to
a one-byte buffer overrun in all callers of EVP_read_pw_string().

Found by mestre running 'openssl passwd' with MALLOC_OPTIONS including C.

Fix this by doing some basic sanity checking in EVP_read_pw_string_min().
Cap the len argument at BUFSIZ and ensure that min < len as well as
0 <= min and 1 <= len.  The last two checks are important as these
numbers may end up in reallocarray().

ok bcook (on previous version), jsing, mestre
lib/libcrypto/evp/evp_key.c