[openssl-commits] [openssl] master update
Rich Salz
rsalz at openssl.org
Fri Jan 13 21:01:48 UTC 2017
The branch master has been updated
via 5071824321e1bbe20b859c1a3609ea5ab09fb3f2 (commit)
from 37b8f1e21c56996644afa38816f575b05eb483ae (commit)
- Log -----------------------------------------------------------------
commit 5071824321e1bbe20b859c1a3609ea5ab09fb3f2
Author: Rich Salz <rsalz at openssl.org>
Date: Fri Jan 13 11:00:26 2017 -0500
Fix "failure rate" bugs
Reviewed-by: Emilia Käsper <emilia at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2228)
-----------------------------------------------------------------------
Summary of changes:
crypto/mem.c | 11 ++++++-----
doc/man3/OPENSSL_malloc.pod | 4 ++--
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/crypto/mem.c b/crypto/mem.c
index 2e8a00c..16558ac 100644
--- a/crypto/mem.c
+++ b/crypto/mem.c
@@ -32,7 +32,7 @@ static void (*free_impl)(void *, const char *, int)
#ifndef OPENSSL_NO_CRYPTO_MDEBUG
static char *md_failstring;
static long md_count;
-static int md_percent = 100;
+static int md_fail_percent = 0;
static int md_tracefd = -1;
static int call_malloc_debug = 1;
@@ -89,7 +89,8 @@ void CRYPTO_get_mem_functions(
* Parse a "malloc failure spec" string. This likes like a set of fields
* separated by semicolons. Each field has a count and an optional failure
* percentage. For example:
- * 100;100 at 25;@100
+ * 100 at 0;100 at 25;0 at 0
+ * or 100;100 at 25;0
* This means 100 mallocs succeed, then next 100 fail 25% of the time, and
* all remaining (count is zero) succeed.
*/
@@ -104,7 +105,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_percent = atsign == NULL ? 100 : atoi(atsign + 1);
+ md_fail_percent = atsign == NULL ? 0 : atoi(atsign + 1);
if (semi != NULL)
md_failstring = semi;
@@ -116,13 +117,13 @@ static void parseit(void)
static int shouldfail(void)
{
int roll = (int)(random() % 100);
- int shouldfail = roll > md_percent;
+ int shouldfail = roll < md_fail_percent;
char buff[80];
if (md_tracefd > 0) {
BIO_snprintf(buff, sizeof(buff),
"%c C%ld %%%d R%d\n",
- shouldfail ? '-' : '+', md_count, md_percent, roll);
+ shouldfail ? '-' : '+', md_count, md_fail_percent, roll);
write(md_tracefd, buff, strlen(buff));
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
if (shouldfail) {
diff --git a/doc/man3/OPENSSL_malloc.pod b/doc/man3/OPENSSL_malloc.pod
index 4b55f31..2914143 100644
--- a/doc/man3/OPENSSL_malloc.pod
+++ b/doc/man3/OPENSSL_malloc.pod
@@ -152,8 +152,8 @@ B<OPENSSL_MALLOC_FAILURES> controls how often allocations should fail.
It is a set of fields separated by semicolons, which each field is a count
(defaulting to zero) and an optional atsign and percentage (defaulting
to 100). If the count is zero, then it lasts forever. For example,
-C<100;@25> means the first 100 allocations pass, then all other allocations
-(until the program exits or crashes) have the rest have a 25% chance of
+C<100;@25> or C<100 at 0;0 at 25> means the first 100 allocations pass, then all
+other allocations (until the program exits or crashes) have a 25% chance of
failing.
If the variable B<OPENSSL_MALLOC_FD> is parsed as a positive integer, then
More information about the openssl-commits
mailing list