Skip to content

Commit

Permalink
Improve Malloc Failure Test
Browse files Browse the repository at this point in the history
Allow 2 digits after the comma in percentage in OPENSSL_MALLOC_FAILURES.
Add OPENSSL_MALLOC_SEED to allow for some randomization.

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from #22127)

(cherry picked from commit 3df5736)
  • Loading branch information
bernd-edlinger authored and t8m committed Oct 11, 2023
1 parent f5fb3ac commit 1eeada0
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions crypto/mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount)
* or 100;100@25;0
* This means 100 mallocs succeed, then next 100 fail 25% of the time, and
* all remaining (count is zero) succeed.
* The failure percentge can have 2 digits after the comma. For example:
* 0@0.01
* This means 0.01% of all allocations will fail.
*/
static void parseit(void)
{
Expand All @@ -112,7 +115,7 @@ static void parseit(void)
/* Get the count (atol will stop at the @ if there), and percentage */
md_count = atol(md_failstring);
atsign = strchr(md_failstring, '@');
md_fail_percent = atsign == NULL ? 0 : atoi(atsign + 1);
md_fail_percent = atsign == NULL ? 0 : (int)(atof(atsign + 1) * 100 + 0.5);

if (semi != NULL)
md_failstring = semi;
Expand All @@ -131,7 +134,7 @@ static void parseit(void)
*/
static int shouldfail(void)
{
int roll = (int)(random() % 100);
int roll = (int)(random() % 10000);
int shoulditfail = roll < md_fail_percent;
# ifndef _WIN32
/* suppressed on Windows as POSIX-like file descriptors are non-inheritable */
Expand Down Expand Up @@ -165,6 +168,8 @@ void ossl_malloc_setup_failures(void)
parseit();
if ((cp = getenv("OPENSSL_MALLOC_FD")) != NULL)
md_tracefd = atoi(cp);
if ((cp = getenv("OPENSSL_MALLOC_SEED")) != NULL)
srandom(atoi(cp));
}
#endif

Expand Down

0 comments on commit 1eeada0

Please sign in to comment.