Add "random malloc failure" tooling
authorRich Salz <rsalz@openssl.org>
Fri, 8 Jul 2016 17:40:08 +0000 (13:40 -0400)
committerRich Salz <rsalz@openssl.org>
Thu, 12 Jan 2017 16:27:27 +0000 (11:27 -0500)
commitf7edeced4d8d3f650c5ee32f20ba7165da4e3067
tree53685ab2f88fb0c8c096abce029a4d18fe1d14ec
parent329f2f4a428b0acb7a579869a13f6cd6bf0a3551
Add "random malloc failure" tooling

Still needs to be documented, somehow/somewhere.

The env var OPENSSL_MALLOC_FAILURES controls how often malloc/realloc
should fail.  It's a set of fields separated by semicolons.  Each field
is a count and optional percentage (separated by @) which defaults to 100.
If count is zero then it lasts "forever."  For example: 100;@25 means the
first 100 allocations pass, then the rest have a 25% chance of failing
until the program exits or crashes.

If env var OPENSSL_MALLOC_FD parses as a positive integer, a record
of all malloc "shouldfail" tests is written to that file descriptor.
If a malloc will fail, and OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE is not set
(platform specific), then a backtrace will be written to the descriptor
when a malloc fails.  This can be useful because a malloc may fail but
not be checked, and problems will only occur later.

Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/1252)
crypto/include/internal/cryptlib_int.h
crypto/init.c
crypto/mem.c