aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLidong Yan <502024330056@smail.nju.edu.cn>2025-05-12 12:49:03 +0000
committerJunio C Hamano <gitster@pobox.com>2025-05-12 09:19:49 -0700
commitc8e752eaeff299012b582507fed078a7cecbb7a3 (patch)
tree193b8f19b86c998591fae908aeabfb878ce5833a
parentd50a5e8939abfc07c2ff97ae72e9330939b36ee0 (diff)
downloadgit-c8e752eaeff299012b582507fed078a7cecbb7a3.tar.gz
reftable/writer: fix memory leak when `padded_write()` fails
In reftable/writer.c:padded_write(), if w->writer failed, zeroed allocated in `reftable_calloc` will leak. w->writer could be `reftable_write_data` in reftable/stack.c, and could fail due to some write error. Simply add reftable_free(zeroed) will solve this problem. Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--reftable/writer.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/reftable/writer.c b/reftable/writer.c
index f3ab1035d6..d71a56e8fc 100644
--- a/reftable/writer.c
+++ b/reftable/writer.c
@@ -57,8 +57,10 @@ static int padded_write(struct reftable_writer *w, uint8_t *data, size_t len,
return -1;
n = w->write(w->write_arg, zeroed, w->pending_padding);
- if (n < 0)
+ if (n < 0) {
+ reftable_free(zeroed);
return n;
+ }
w->pending_padding = 0;
reftable_free(zeroed);