Skip to content

Commit 3969e6c

Browse files
ttaylorrgitster
authored andcommitted
pack-write.c: plug a leak in stage_tmp_packfiles()
The function `stage_tmp_packfiles()` generates a filename to use for staging the contents of what will become the pack's ".rev" file. The name is generated in `write_rev_file_order()` (via its caller `write_rev_file()`) in a string buffer, and the result is returned back to `stage_tmp_packfiles()` which uses it to rename the temporary file into place via `rename_tmp_packfiles()`. That name is not visible outside of `stage_tmp_packfiles()`, so it can (and should) be `free()`'d at the end of that function. We can't free it in `rename_tmp_packfile()` since not all of its `source` arguments are unreachable after calling it. Instead, simply free() `rev_tmp_name` at the end of `stage_tmp_packfiles()`. (Note that the same leak exists for `mtimes_tmp_name`, but we do not address it in this commit). Signed-off-by: Taylor Blau <[email protected]> Acked-by: Derrick Stolee <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9857273 commit 3969e6c

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

pack-write.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,8 @@ void stage_tmp_packfiles(struct strbuf *name_buffer,
568568
rename_tmp_packfile(name_buffer, rev_tmp_name, "rev");
569569
if (mtimes_tmp_name)
570570
rename_tmp_packfile(name_buffer, mtimes_tmp_name, "mtimes");
571+
572+
free((char *)rev_tmp_name);
571573
}
572574

573575
void write_promisor_file(const char *promisor_name, struct ref **sought, int nr_sought)

0 commit comments

Comments
 (0)