[PATCH 04/12] bloom: clear each bloom_key after use
- From
Andrzej Hunt via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Apr 9, 2021, 18:47 UTC
- Message-ID
- <9ae15b94881369fa1cbd09fc2de9cc94c30edb2d.1617994052.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.929.git.1617994052.gitgitgadget@gmail.com>
From: Andrzej Hunt <ajrhunt@google.com>
fill_bloom_key() allocates memory into bloom_key, we need to clean that up once the key is no longer needed.
This fixes the following leak which was found while running t0002-t0099. Although this leak is happening in code being called from a test-helper, the same code is also used in various locations around git, and could presumably happen during normal usage too.
Direct leak of 308 byte(s) in 11 object(s) allocated from:
#0 0x49a5e2 in calloc ../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:154:3
#1 0x6f4032 in xcalloc wrapper.c:140:8
#2 0x4f2905 in fill_bloom_key bloom.c:137:28
#3 0x4f34c1 in get_or_compute_bloom_filter bloom.c:284:4
#4 0x4cb484 in get_bloom_filter_for_commit t/helper/test-bloom.c:43:11
#5 0x4cb072 in cmd__bloom t/helper/test-bloom.c:97:3
#6 0x4ca7ef in cmd_main t/helper/test-tool.c:121:11
#7 0x4caace in main common-main.c:52:11
#8 0x7f798af95349 in __libc_start_main (/lib64/libc.so.6+0x24349)SUMMARY: AddressSanitizer: 308 byte(s) leaked in 11 allocation(s).
Signed-off-by: Andrzej Hunt <ajrhunt@google.com> --- bloom.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/bloom.c b/bloom.c index 52b87474c6eb..5e297038bb1f 100644 --- a/bloom.c +++ b/bloom.c @@ -283,6 +283,7 @@ struct bloom_filter *get_or_compute_bloom_filter(struct repository *r, struct bloom_key key; fill_bloom_key(e->path, strlen(e->path), &key, settings); add_key_to_filter(&key, filter, settings); + clear_bloom_key(&key); } cleanup:
-- gitgitgadget