openssl/crypto/lhash
Matt Caswell 4ce8bebcca Don't make any changes to the lhash structure if we are going to fail
The lhash expand() function can fail if realloc fails. The previous
implementation made changes to the structure and then attempted to do a
realloc. If the realloc failed then it attempted to undo the changes it
had just made. Unfortunately changes to lh->p were not undone correctly,
ultimately causing subsequent expand() calls to increment num_nodes to a
value higher than num_alloc_nodes, which can cause out-of-bounds reads/
writes. This is not considered a security issue because an attacker cannot
cause realloc to fail.

This commit moves the realloc call to near the beginning of the function
before any other changes are made to the lhash structure. That way if a
failure occurs we can immediately fail without having to undo anything.

Thanks to Pavel Kopyl (Samsung) for reporting this issue.

Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4550)
2017-10-24 10:51:56 +01:00
..
build.info unified build scheme: add build.info files 2016-02-01 12:46:58 +01:00
lh_stats.c Document that lhash isn't thread safe under any circumstances and 2017-10-09 07:50:18 +10:00
lhash.c Don't make any changes to the lhash structure if we are going to fail 2017-10-24 10:51:56 +01:00
lhash_lcl.h Document that lhash isn't thread safe under any circumstances and 2017-10-09 07:50:18 +10:00
num.pl Copyright consolidation: perl files 2016-04-20 09:45:40 -04:00