test/bntest.c:468: error: MEMORY_LEAK
  memory dynamically allocated by call to `BN_MONT_CTX_new()` at line 327, column 17 is not reachable after line 468, column 5.
Showing all 136 steps of the trace


test/bntest.c:312:1: start of procedure test_modexp_mont5()
310.    * x86_64 cause a different code branch to be taken.
311.    */
312. > static int test_modexp_mont5(void)
313.   {
314.       BIGNUM *a = NULL, *p = NULL, *m = NULL, *d = NULL, *e = NULL;

test/bntest.c:314:5: 
312.   static int test_modexp_mont5(void)
313.   {
314. >     BIGNUM *a = NULL, *p = NULL, *m = NULL, *d = NULL, *e = NULL;
315.       BIGNUM *b = NULL, *n = NULL, *c = NULL;
316.       BN_MONT_CTX *mont = NULL;

test/bntest.c:315:5: 
313.   {
314.       BIGNUM *a = NULL, *p = NULL, *m = NULL, *d = NULL, *e = NULL;
315. >     BIGNUM *b = NULL, *n = NULL, *c = NULL;
316.       BN_MONT_CTX *mont = NULL;
317.       int st = 0;

test/bntest.c:316:5: 
314.       BIGNUM *a = NULL, *p = NULL, *m = NULL, *d = NULL, *e = NULL;
315.       BIGNUM *b = NULL, *n = NULL, *c = NULL;
316. >     BN_MONT_CTX *mont = NULL;
317.       int st = 0;
318.   

test/bntest.c:317:5: 
315.       BIGNUM *b = NULL, *n = NULL, *c = NULL;
316.       BN_MONT_CTX *mont = NULL;
317. >     int st = 0;
318.   
319.       if (!TEST_ptr(a = BN_new())

test/bntest.c:319:10: Skipping BN_new(): empty list of specs
317.       int st = 0;
318.   
319.       if (!TEST_ptr(a = BN_new())
                ^
320.               || !TEST_ptr(p = BN_new())
321.               || !TEST_ptr(m = BN_new())

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:319:10: Taking false branch
317.       int st = 0;
318.   
319.       if (!TEST_ptr(a = BN_new())
                ^
320.               || !TEST_ptr(p = BN_new())
321.               || !TEST_ptr(m = BN_new())

test/bntest.c:320:17: Skipping BN_new(): empty list of specs
318.   
319.       if (!TEST_ptr(a = BN_new())
320.               || !TEST_ptr(p = BN_new())
                       ^
321.               || !TEST_ptr(m = BN_new())
322.               || !TEST_ptr(d = BN_new())

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:320:17: Taking false branch
318.   
319.       if (!TEST_ptr(a = BN_new())
320.               || !TEST_ptr(p = BN_new())
                       ^
321.               || !TEST_ptr(m = BN_new())
322.               || !TEST_ptr(d = BN_new())

test/bntest.c:321:17: Skipping BN_new(): empty list of specs
319.       if (!TEST_ptr(a = BN_new())
320.               || !TEST_ptr(p = BN_new())
321.               || !TEST_ptr(m = BN_new())
                       ^
322.               || !TEST_ptr(d = BN_new())
323.               || !TEST_ptr(e = BN_new())

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:321:17: Taking false branch
319.       if (!TEST_ptr(a = BN_new())
320.               || !TEST_ptr(p = BN_new())
321.               || !TEST_ptr(m = BN_new())
                       ^
322.               || !TEST_ptr(d = BN_new())
323.               || !TEST_ptr(e = BN_new())

test/bntest.c:322:17: Skipping BN_new(): empty list of specs
320.               || !TEST_ptr(p = BN_new())
321.               || !TEST_ptr(m = BN_new())
322.               || !TEST_ptr(d = BN_new())
                       ^
323.               || !TEST_ptr(e = BN_new())
324.               || !TEST_ptr(b = BN_new())

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:322:17: Taking false branch
320.               || !TEST_ptr(p = BN_new())
321.               || !TEST_ptr(m = BN_new())
322.               || !TEST_ptr(d = BN_new())
                       ^
323.               || !TEST_ptr(e = BN_new())
324.               || !TEST_ptr(b = BN_new())

test/bntest.c:323:17: Skipping BN_new(): empty list of specs
321.               || !TEST_ptr(m = BN_new())
322.               || !TEST_ptr(d = BN_new())
323.               || !TEST_ptr(e = BN_new())
                       ^
324.               || !TEST_ptr(b = BN_new())
325.               || !TEST_ptr(n = BN_new())

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:323:17: Taking false branch
321.               || !TEST_ptr(m = BN_new())
322.               || !TEST_ptr(d = BN_new())
323.               || !TEST_ptr(e = BN_new())
                       ^
324.               || !TEST_ptr(b = BN_new())
325.               || !TEST_ptr(n = BN_new())

test/bntest.c:324:17: Skipping BN_new(): empty list of specs
322.               || !TEST_ptr(d = BN_new())
323.               || !TEST_ptr(e = BN_new())
324.               || !TEST_ptr(b = BN_new())
                       ^
325.               || !TEST_ptr(n = BN_new())
326.               || !TEST_ptr(c = BN_new())

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:324:17: Taking false branch
322.               || !TEST_ptr(d = BN_new())
323.               || !TEST_ptr(e = BN_new())
324.               || !TEST_ptr(b = BN_new())
                       ^
325.               || !TEST_ptr(n = BN_new())
326.               || !TEST_ptr(c = BN_new())

test/bntest.c:325:17: Skipping BN_new(): empty list of specs
323.               || !TEST_ptr(e = BN_new())
324.               || !TEST_ptr(b = BN_new())
325.               || !TEST_ptr(n = BN_new())
                       ^
326.               || !TEST_ptr(c = BN_new())
327.               || !TEST_ptr(mont = BN_MONT_CTX_new()))

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:325:17: Taking false branch
323.               || !TEST_ptr(e = BN_new())
324.               || !TEST_ptr(b = BN_new())
325.               || !TEST_ptr(n = BN_new())
                       ^
326.               || !TEST_ptr(c = BN_new())
327.               || !TEST_ptr(mont = BN_MONT_CTX_new()))

test/bntest.c:326:17: Skipping BN_new(): empty list of specs
324.               || !TEST_ptr(b = BN_new())
325.               || !TEST_ptr(n = BN_new())
326.               || !TEST_ptr(c = BN_new())
                       ^
327.               || !TEST_ptr(mont = BN_MONT_CTX_new()))
328.           goto err;

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:326:17: Taking false branch
324.               || !TEST_ptr(b = BN_new())
325.               || !TEST_ptr(n = BN_new())
326.               || !TEST_ptr(c = BN_new())
                       ^
327.               || !TEST_ptr(mont = BN_MONT_CTX_new()))
328.           goto err;

test/bntest.c:327:17: 
325.               || !TEST_ptr(n = BN_new())
326.               || !TEST_ptr(c = BN_new())
327. >             || !TEST_ptr(mont = BN_MONT_CTX_new()))
328.           goto err;
329.   

crypto/bn/bn_mont.c:196:1: start of procedure BN_MONT_CTX_new()
  194.   }
  195.   
  196. > BN_MONT_CTX *BN_MONT_CTX_new(void)
  197.   {
  198.       BN_MONT_CTX *ret;

crypto/bn/bn_mont.c:200:9: 
  198.       BN_MONT_CTX *ret;
  199.   
  200. >     if ((ret = OPENSSL_malloc(sizeof(*ret))) == NULL)
  201.           return NULL;
  202.   

crypto/mem.c:192:1: start of procedure CRYPTO_malloc()
    190.   #endif
    191.   
    192. > void *CRYPTO_malloc(size_t num, const char *file, int line)
    193.   {
    194.       void *ret = NULL;

crypto/mem.c:194:5: 
    192.   void *CRYPTO_malloc(size_t num, const char *file, int line)
    193.   {
    194. >     void *ret = NULL;
    195.   
    196.       INCREMENT(malloc_count);

crypto/mem.c:197:9: Taking false branch
    195.   
    196.       INCREMENT(malloc_count);
    197.       if (malloc_impl != NULL && malloc_impl != CRYPTO_malloc)
                   ^
    198.           return malloc_impl(num, file, line);
    199.   

crypto/mem.c:200:9: Taking false branch
    198.           return malloc_impl(num, file, line);
    199.   
    200.       if (num == 0)
                   ^
    201.           return NULL;
    202.   

crypto/mem.c:204:9: Taking true branch
    202.   
    203.       FAILTEST();
    204.       if (allow_customize) {
                   ^
    205.           /*
    206.            * Disallow customization after the first allocation. We only set this

crypto/mem.c:210:9: 
    208.            * allocation.
    209.            */
    210. >         allow_customize = 0;
    211.       }
    212.   #ifndef OPENSSL_NO_CRYPTO_MDEBUG

crypto/mem.c:221:5: 
    219.       }
    220.   #else
    221. >     (void)(file); (void)(line);
    222.       ret = malloc(num);
    223.   #endif

crypto/mem.c:221:19: 
    219.       }
    220.   #else
    221. >     (void)(file); (void)(line);
    222.       ret = malloc(num);
    223.   #endif

crypto/mem.c:222:5: 
    220.   #else
    221.       (void)(file); (void)(line);
    222. >     ret = malloc(num);
    223.   #endif
    224.   

crypto/mem.c:225:5: 
    223.   #endif
    224.   
    225. >     return ret;
    226.   }
    227.   

crypto/mem.c:226:1: return from a call to CRYPTO_malloc
    224.   
    225.       return ret;
    226. > }
    227.   
    228.   void *CRYPTO_zalloc(size_t num, const char *file, int line)

crypto/bn/bn_mont.c:200:9: Taking false branch
  198.       BN_MONT_CTX *ret;
  199.   
  200.       if ((ret = OPENSSL_malloc(sizeof(*ret))) == NULL)
                 ^
  201.           return NULL;
  202.   

crypto/bn/bn_mont.c:203:5: 
  201.           return NULL;
  202.   
  203. >     BN_MONT_CTX_init(ret);
  204.       ret->flags = BN_FLG_MALLOCED;
  205.       return ret;

crypto/bn/bn_mont.c:208:1: start of procedure BN_MONT_CTX_init()
    206.   }
    207.   
    208. > void BN_MONT_CTX_init(BN_MONT_CTX *ctx)
    209.   {
    210.       ctx->ri = 0;

crypto/bn/bn_mont.c:210:5: 
    208.   void BN_MONT_CTX_init(BN_MONT_CTX *ctx)
    209.   {
    210. >     ctx->ri = 0;
    211.       bn_init(&ctx->RR);
    212.       bn_init(&ctx->N);

crypto/bn/bn_mont.c:211:5: Skipping bn_init(): empty list of specs
    209.   {
    210.       ctx->ri = 0;
    211.       bn_init(&ctx->RR);
               ^
    212.       bn_init(&ctx->N);
    213.       bn_init(&ctx->Ni);

crypto/bn/bn_mont.c:212:5: Skipping bn_init(): empty list of specs
    210.       ctx->ri = 0;
    211.       bn_init(&ctx->RR);
    212.       bn_init(&ctx->N);
               ^
    213.       bn_init(&ctx->Ni);
    214.       ctx->n0[0] = ctx->n0[1] = 0;

crypto/bn/bn_mont.c:213:5: Skipping bn_init(): empty list of specs
    211.       bn_init(&ctx->RR);
    212.       bn_init(&ctx->N);
    213.       bn_init(&ctx->Ni);
               ^
    214.       ctx->n0[0] = ctx->n0[1] = 0;
    215.       ctx->flags = 0;

crypto/bn/bn_mont.c:214:5: 
    212.       bn_init(&ctx->N);
    213.       bn_init(&ctx->Ni);
    214. >     ctx->n0[0] = ctx->n0[1] = 0;
    215.       ctx->flags = 0;
    216.   }

crypto/bn/bn_mont.c:215:5: 
    213.       bn_init(&ctx->Ni);
    214.       ctx->n0[0] = ctx->n0[1] = 0;
    215. >     ctx->flags = 0;
    216.   }
    217.   

crypto/bn/bn_mont.c:216:1: return from a call to BN_MONT_CTX_init
    214.       ctx->n0[0] = ctx->n0[1] = 0;
    215.       ctx->flags = 0;
    216. > }
    217.   
    218.   void BN_MONT_CTX_free(BN_MONT_CTX *mont)

crypto/bn/bn_mont.c:204:5: 
  202.   
  203.       BN_MONT_CTX_init(ret);
  204. >     ret->flags = BN_FLG_MALLOCED;
  205.       return ret;
  206.   }

crypto/bn/bn_mont.c:205:5: 
  203.       BN_MONT_CTX_init(ret);
  204.       ret->flags = BN_FLG_MALLOCED;
  205. >     return ret;
  206.   }
  207.   

crypto/bn/bn_mont.c:206:1: return from a call to BN_MONT_CTX_new
  204.       ret->flags = BN_FLG_MALLOCED;
  205.       return ret;
  206. > }
  207.   
  208.   void BN_MONT_CTX_init(BN_MONT_CTX *ctx)

test/testutil/tests.c:228:1: start of procedure test_ptr()
  226.   }
  227.   
  228. > int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)

test/testutil/tests.c:230:9: Taking true branch
  228.   int test_ptr(const char *file, int line, const char *s, const void *p)
  229.   {
  230.       if (p != NULL)
                 ^
  231.           return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);

test/testutil/tests.c:231:9: 
  229.   {
  230.       if (p != NULL)
  231. >         return 1;
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;

test/testutil/tests.c:234:1: return from a call to test_ptr
  232.       test_fail_message(NULL, file, line, "ptr", s, "NULL", "!=", "%p", p);
  233.       return 0;
  234. > }
  235.   
  236.   int test_true(const char *file, int line, const char *s, int b)

test/bntest.c:327:17: Taking false branch
325.               || !TEST_ptr(n = BN_new())
326.               || !TEST_ptr(c = BN_new())
327.               || !TEST_ptr(mont = BN_MONT_CTX_new()))
                       ^
328.           goto err;
329.   

test/bntest.c:330:5: 
328.           goto err;
329.   
330. >     BN_bntest_rand(m, 1024, 0, 1); /* must be odd for montgomery */
331.       /* Zero exponent */
332.       BN_bntest_rand(a, 1024, 0, 0);

crypto/bn/bn_rand.c:102:1: start of procedure BN_bntest_rand()
  100.   }
  101.   
  102. > int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)
  103.   {
  104.       return bnrand(TESTING, rnd, bits, top, bottom);

crypto/bn/bn_rand.c:104:5: Skipping bnrand(): empty list of specs
  102.   int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)
  103.   {
  104.       return bnrand(TESTING, rnd, bits, top, bottom);
             ^
  105.   }
  106.   

crypto/bn/bn_rand.c:105:1: return from a call to BN_bntest_rand
  103.   {
  104.       return bnrand(TESTING, rnd, bits, top, bottom);
  105. > }
  106.   
  107.   int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom)

test/bntest.c:332:5: 
330.       BN_bntest_rand(m, 1024, 0, 1); /* must be odd for montgomery */
331.       /* Zero exponent */
332. >     BN_bntest_rand(a, 1024, 0, 0);
333.       BN_zero(p);
334.       if (!TEST_true(BN_mod_exp_mont_consttime(d, a, p, m, ctx, NULL)))

crypto/bn/bn_rand.c:102:1: start of procedure BN_bntest_rand()
  100.   }
  101.   
  102. > int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)
  103.   {
  104.       return bnrand(TESTING, rnd, bits, top, bottom);

crypto/bn/bn_rand.c:104:5: Skipping bnrand(): empty list of specs
  102.   int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)
  103.   {
  104.       return bnrand(TESTING, rnd, bits, top, bottom);
             ^
  105.   }
  106.   

crypto/bn/bn_rand.c:105:1: return from a call to BN_bntest_rand
  103.   {
  104.       return bnrand(TESTING, rnd, bits, top, bottom);
  105. > }
  106.   
  107.   int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom)

test/bntest.c:333:5: Skipping BN_set_word(): empty list of specs
331.       /* Zero exponent */
332.       BN_bntest_rand(a, 1024, 0, 0);
333.       BN_zero(p);
           ^
334.       if (!TEST_true(BN_mod_exp_mont_consttime(d, a, p, m, ctx, NULL)))
335.           goto err;

test/bntest.c:334:10: Condition is true
332.       BN_bntest_rand(a, 1024, 0, 0);
333.       BN_zero(p);
334.       if (!TEST_true(BN_mod_exp_mont_consttime(d, a, p, m, ctx, NULL)))
                ^
335.           goto err;
336.       if (!TEST_BN_eq_one(d))

test/testutil/tests.c:236:1: start of procedure test_true()
  234.   }
  235.   
  236. > int test_true(const char *file, int line, const char *s, int b)
  237.   {
  238.       if (b)

test/testutil/tests.c:238:9: Taking true branch
  236.   int test_true(const char *file, int line, const char *s, int b)
  237.   {
  238.       if (b)
                 ^
  239.           return 1;
  240.       test_fail_message(NULL, file, line, "bool", s, "true", "==", "false");

test/testutil/tests.c:239:9: 
  237.   {
  238.       if (b)
  239. >         return 1;
  240.       test_fail_message(NULL, file, line, "bool", s, "true", "==", "false");
  241.       return 0;

test/testutil/tests.c:242:1: return from a call to test_true
  240.       test_fail_message(NULL, file, line, "bool", s, "true", "==", "false");
  241.       return 0;
  242. > }
  243.   
  244.   int test_false(const char *file, int line, const char *s, int b)

test/bntest.c:334:10: Taking false branch
332.       BN_bntest_rand(a, 1024, 0, 0);
333.       BN_zero(p);
334.       if (!TEST_true(BN_mod_exp_mont_consttime(d, a, p, m, ctx, NULL)))
                ^
335.           goto err;
336.       if (!TEST_BN_eq_one(d))

test/bntest.c:336:10: 
334.       if (!TEST_true(BN_mod_exp_mont_consttime(d, a, p, m, ctx, NULL)))
335.           goto err;
336. >     if (!TEST_BN_eq_one(d))
337.           goto err;
338.   

test/testutil/tests.c:364:1: start of procedure test_BN_eq_one()
  362.   DEFINE_BN_COMPARISONS(le, <=, BN_is_negative(a) || BN_is_zero(a))
  363.   
  364. > int test_BN_eq_one(const char *file, int line, const char *s, const BIGNUM *a)
  365.   {
  366.       if (a != NULL && BN_is_one(a))

test/testutil/tests.c:366:9: Taking true branch
  364.   int test_BN_eq_one(const char *file, int line, const char *s, const BIGNUM *a)
  365.   {
  366.       if (a != NULL && BN_is_one(a))
                 ^
  367.           return 1;
  368.       test_fail_bignum_mono_message(NULL, file, line, "BIGNUM", s, "1", "==", a);

test/testutil/tests.c:366:22: 
  364.   int test_BN_eq_one(const char *file, int line, const char *s, const BIGNUM *a)
  365.   {
  366. >     if (a != NULL && BN_is_one(a))
  367.           return 1;
  368.       test_fail_bignum_mono_message(NULL, file, line, "BIGNUM", s, "1", "==", a);

crypto/bn/bn_lib.c:819:1: start of procedure BN_is_one()
    817.   }
    818.   
    819. > int BN_is_one(const BIGNUM *a)
    820.   {
    821.       return BN_abs_is_word(a, 1) && !a->neg;

crypto/bn/bn_lib.c:821:12: 
    819.   int BN_is_one(const BIGNUM *a)
    820.   {
    821. >     return BN_abs_is_word(a, 1) && !a->neg;
    822.   }
    823.   

crypto/bn/bn_lib.c:809:1: start of procedure BN_abs_is_word()
      807.   }
      808.   
      809. > int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w)
      810.   {
      811.       return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));

crypto/bn/bn_lib.c:811:14: Condition is true
      809.   int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w)
      810.   {
      811.       return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));
                          ^
      812.   }
      813.   

crypto/bn/bn_lib.c:811:31: Condition is true
      809.   int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w)
      810.   {
      811.       return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));
                                           ^
      812.   }
      813.   

crypto/bn/bn_lib.c:811:12: 
      809.   int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w)
      810.   {
      811. >     return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));
      812.   }
      813.   

crypto/bn/bn_lib.c:811:5: 
      809.   int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w)
      810.   {
      811. >     return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));
      812.   }
      813.   

crypto/bn/bn_lib.c:812:1: return from a call to BN_abs_is_word
      810.   {
      811.       return ((a->top == 1) && (a->d[0] == w)) || ((w == 0) && (a->top == 0));
      812. > }
      813.   
      814.   int BN_is_zero(const BIGNUM *a)

crypto/bn/bn_lib.c:821:12: Condition is true
    819.   int BN_is_one(const BIGNUM *a)
    820.   {
    821.       return BN_abs_is_word(a, 1) && !a->neg;
                      ^
    822.   }
    823.   

crypto/bn/bn_lib.c:821:37: Condition is false
    819.   int BN_is_one(const BIGNUM *a)
    820.   {
    821.       return BN_abs_is_word(a, 1) && !a->neg;
                                               ^
    822.   }
    823.   

crypto/bn/bn_lib.c:821:12: 
    819.   int BN_is_one(const BIGNUM *a)
    820.   {
    821. >     return BN_abs_is_word(a, 1) && !a->neg;
    822.   }
    823.   

crypto/bn/bn_lib.c:821:5: 
    819.   int BN_is_one(const BIGNUM *a)
    820.   {
    821. >     return BN_abs_is_word(a, 1) && !a->neg;
    822.   }
    823.   

crypto/bn/bn_lib.c:822:1: return from a call to BN_is_one
    820.   {
    821.       return BN_abs_is_word(a, 1) && !a->neg;
    822. > }
    823.   
    824.   int BN_is_word(const BIGNUM *a, const BN_ULONG w)

test/testutil/tests.c:366:22: Taking false branch
  364.   int test_BN_eq_one(const char *file, int line, const char *s, const BIGNUM *a)
  365.   {
  366.       if (a != NULL && BN_is_one(a))
                              ^
  367.           return 1;
  368.       test_fail_bignum_mono_message(NULL, file, line, "BIGNUM", s, "1", "==", a);

test/testutil/tests.c:368:5: 
  366.       if (a != NULL && BN_is_one(a))
  367.           return 1;
  368. >     test_fail_bignum_mono_message(NULL, file, line, "BIGNUM", s, "1", "==", a);
  369.       return 0;
  370.   }

test/testutil/format_output.c:373:1: start of procedure test_fail_bignum_mono_message()
    371.   }
    372.   
    373. > void test_fail_bignum_mono_message(const char *prefix, const char *file,
    374.                                      int line, const char *type,
    375.                                      const char *left, const char *right,

test/testutil/format_output.c:378:5: Skipping test_fail_bignum_common(): empty list of specs
    376.                                      const char *op, const BIGNUM *bn)
    377.   {
    378.       test_fail_bignum_common(prefix, file, line, type, left, right, op, bn, bn);
               ^
    379.       test_printf_stderr("\n");
    380.   }

test/testutil/format_output.c:379:5: Skipping test_printf_stderr(): empty list of specs
    377.   {
    378.       test_fail_bignum_common(prefix, file, line, type, left, right, op, bn, bn);
    379.       test_printf_stderr("\n");
               ^
    380.   }
    381.   

test/testutil/format_output.c:380:1: return from a call to test_fail_bignum_mono_message
    378.       test_fail_bignum_common(prefix, file, line, type, left, right, op, bn, bn);
    379.       test_printf_stderr("\n");
    380. > }
    381.   
    382.   void test_output_bignum(const char *name, const BIGNUM *bn)

test/testutil/tests.c:369:5: 
  367.           return 1;
  368.       test_fail_bignum_mono_message(NULL, file, line, "BIGNUM", s, "1", "==", a);
  369. >     return 0;
  370.   }
  371.   

test/testutil/tests.c:370:1: return from a call to test_BN_eq_one
  368.       test_fail_bignum_mono_message(NULL, file, line, "BIGNUM", s, "1", "==", a);
  369.       return 0;
  370. > }
  371.   
  372.   int test_BN_odd(const char *file, int line, const char *s, const BIGNUM *a)

test/bntest.c:336:10: Taking true branch
334.       if (!TEST_true(BN_mod_exp_mont_consttime(d, a, p, m, ctx, NULL)))
335.           goto err;
336.       if (!TEST_BN_eq_one(d))
                ^
337.           goto err;
338.   

test/bntest.c:467:1: 
465.       st = 1;
466.   
467. > err:
468.       BN_MONT_CTX_free(mont);
469.       BN_free(a);

test/bntest.c:468:5: 
466.   
467.   err:
468. >     BN_MONT_CTX_free(mont);
469.       BN_free(a);
470.       BN_free(p);

crypto/bn/bn_mont.c:218:1: start of procedure BN_MONT_CTX_free()
  216.   }
  217.   
  218. > void BN_MONT_CTX_free(BN_MONT_CTX *mont)
  219.   {
  220.       if (mont == NULL)

crypto/bn/bn_mont.c:220:9: Taking false branch
  218.   void BN_MONT_CTX_free(BN_MONT_CTX *mont)
  219.   {
  220.       if (mont == NULL)
                 ^
  221.           return;
  222.       BN_clear_free(&mont->RR);

crypto/bn/bn_mont.c:222:5: Skipping BN_clear_free(): empty list of specs
  220.       if (mont == NULL)
  221.           return;
  222.       BN_clear_free(&mont->RR);
             ^
  223.       BN_clear_free(&mont->N);
  224.       BN_clear_free(&mont->Ni);

crypto/bn/bn_mont.c:223:5: Skipping BN_clear_free(): empty list of specs
  221.           return;
  222.       BN_clear_free(&mont->RR);
  223.       BN_clear_free(&mont->N);
             ^
  224.       BN_clear_free(&mont->Ni);
  225.       if (mont->flags & BN_FLG_MALLOCED)

crypto/bn/bn_mont.c:224:5: Skipping BN_clear_free(): empty list of specs
  222.       BN_clear_free(&mont->RR);
  223.       BN_clear_free(&mont->N);
  224.       BN_clear_free(&mont->Ni);
             ^
  225.       if (mont->flags & BN_FLG_MALLOCED)
  226.           OPENSSL_free(mont);

crypto/bn/bn_mont.c:225:9: Taking false branch
  223.       BN_clear_free(&mont->N);
  224.       BN_clear_free(&mont->Ni);
  225.       if (mont->flags & BN_FLG_MALLOCED)
                 ^
  226.           OPENSSL_free(mont);
  227.   }

crypto/bn/bn_mont.c:225:5: 
  223.       BN_clear_free(&mont->N);
  224.       BN_clear_free(&mont->Ni);
  225. >     if (mont->flags & BN_FLG_MALLOCED)
  226.           OPENSSL_free(mont);
  227.   }

crypto/bn/bn_mont.c:227:1: return from a call to BN_MONT_CTX_free
  225.       if (mont->flags & BN_FLG_MALLOCED)
  226.           OPENSSL_free(mont);
  227. > }
  228.   
  229.   int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
