From 9224c3025243a3daeb49fa58b948c6e1fdf99501 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 22 Oct 2025 13:38:37 -0400 Subject: [PATCH] Fix memory leaks in pg_combinebackup/reconstruct.c. One code path forgot to free the separately-malloc'd filename part of a struct rfile. Another place freed the filename but forgot the struct rfile itself. These seem worth fixing because with a large backup we could be dealing with many files. Coverity found the bug in make_rfile(). I found the other one by manual inspection. --- src/bin/pg_combinebackup/reconstruct.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bin/pg_combinebackup/reconstruct.c b/src/bin/pg_combinebackup/reconstruct.c index 8acaa54ff38..38d8e8a2dc9 100644 --- a/src/bin/pg_combinebackup/reconstruct.c +++ b/src/bin/pg_combinebackup/reconstruct.c @@ -370,6 +370,7 @@ reconstruct_from_incremental_file(char *input_filename, if (s->relative_block_numbers != NULL) pfree(s->relative_block_numbers); pg_free(s->filename); + pg_free(s); } pfree(sourcemap); pfree(offsetmap); @@ -517,6 +518,7 @@ make_rfile(char *filename, bool missing_ok) { if (missing_ok && errno == ENOENT) { + pg_free(rf->filename); pg_free(rf); return NULL; } -- 2.39.5