diff options
author | Micah Elizabeth Scott <beth@torproject.org> | 2023-05-11 11:17:43 -0700 |
---|---|---|
committer | Micah Elizabeth Scott <beth@torproject.org> | 2023-05-11 11:17:43 -0700 |
commit | a3ff3155c22e7cf093667c6c32166a8f9c77a79a (patch) | |
tree | 224877a438967401d598644315e8934755fcd1cb /src/test | |
parent | c71b6a14a391769261a08e96d0a1d90b5d1c9e11 (diff) | |
download | tor-a3ff3155c22e7cf093667c6c32166a8f9c77a79a.tar.gz tor-a3ff3155c22e7cf093667c6c32166a8f9c77a79a.zip |
test_crypto: avoid memory leak in some hashx test failures
This should fix one of the warnings in issue #40792.
I was sloppy with freeing memory in the failure cases for
test_crypto_hashx. ASAN didn't notice but coverity did. Okay, I'll eat
my vegetables and put hashx_ctx's deinit in an upper scope and use
'goto done' correctly like a properly diligent C programmer.
Signed-off-by: Micah Elizabeth Scott <beth@torproject.org>
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/test_crypto.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c index 82a9d5d642..926d4178c1 100644 --- a/src/test/test_crypto.c +++ b/src/test/test_crypto.c @@ -2990,6 +2990,7 @@ test_crypto_hashx(void *arg) const unsigned num_vectors = sizeof vectors / sizeof vectors[0]; const unsigned num_variations = sizeof variations / sizeof variations[0]; + hashx_ctx *ctx = NULL; for (unsigned vec_i = 0; vec_i < num_vectors; vec_i++) { const char *seed_literal = vectors[vec_i].seed_literal; @@ -3008,7 +3009,9 @@ test_crypto_hashx(void *arg) for (unsigned vari_i = 0; vari_i < num_variations; vari_i++) { uint8_t out_actual[HASHX_SIZE] = { 0 }; - hashx_ctx *ctx = hashx_alloc(variations[vari_i].type); + hashx_free(ctx); + ctx = hashx_alloc(variations[vari_i].type); + tt_ptr_op(ctx, OP_NE, NULL); tt_ptr_op(ctx, OP_NE, HASHX_NOTSUPP); retval = hashx_make(ctx, seed_literal, seed_len); @@ -3017,13 +3020,11 @@ test_crypto_hashx(void *arg) memset(out_actual, 0xa5, sizeof out_actual); hashx_exec(ctx, hash_input, out_actual); tt_mem_op(out_actual, OP_EQ, out_expected, sizeof out_actual); - - hashx_free(ctx); } } done: - ; + hashx_free(ctx); } /* We want the likelihood that the random buffer exhibits any regular pattern |