Skip to content

Commit 5e786ed

Browse files
rjustogitster
authored andcommitted
config: fix a leak in git_config_copy_or_rename_section_in_file
A branch can have its configuration spread over several configuration sections. This situation was already foreseen in 52d59cc (branch: add a --copy (-c) option to go with --move (-m), 2017-06-18) when "branch -c" was introduced. Unfortunately, a leak was also introduced: $ git branch foo $ cat >> .git/config <<EOF [branch "foo"] some-key-a = a value [branch "foo"] some-key-b = b value [branch "foo"] some-key-c = c value EOF $ git branch -c foo bar Direct leak of 130 byte(s) in 2 object(s) allocated from: ... in xrealloc wrapper.c ... in strbuf_grow strbuf.c ... in strbuf_vaddf strbuf.c ... in strbuf_addf strbuf.c ... in store_create_section config.c ... in git_config_copy_or_rename_section_in_file config.c ... in git_config_copy_section_in_file config.c ... in git_config_copy_section config.c ... in copy_or_rename_branch builtin/branch.c ... in cmd_branch builtin/branch.c ... in run_builtin git.c Let's fix it. Signed-off-by: Rubén Justo <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 2935a97 commit 5e786ed

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

config.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3833,6 +3833,7 @@ static int git_config_copy_or_rename_section_in_file(const char *config_filename
38333833
output[0] = '\t';
38343834
}
38353835
} else {
3836+
strbuf_release(&copystr);
38363837
copystr = store_create_section(new_name, &store);
38373838
}
38383839
}

0 commit comments

Comments
 (0)