Skip to content

Commit 359516f

Browse files
sceptical-coderdscho
authored andcommitted
status: fix for old-style submodules with commondir
In f9b7573 (repository: free fields before overwriting them, 2017-09-05), Git was taught to release memory before overwriting it, but 357a03e (repository.c: move env-related setup code back to environment.c, 2018-03-03) changed the code so that it would not _always_ be overwritten. As a consequence, the `commondir` attribute would point to already-free()d memory. This seems not to cause problems in core Git, but there are add-on patches in Git for Windows where the `commondir` attribute is subsequently used and causing invalid memory accesses e.g. in setups containing old-style submodules (i.e. the ones with a `.git` directory within theirs worktrees) that have `commondir` configured. This fixes #4083. Signed-off-by: Andrey Zabavnikov <zabavnikov@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent 4c1ff5b commit 359516f

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

repository.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static void repo_set_commondir(struct repository *repo,
4646
{
4747
struct strbuf sb = STRBUF_INIT;
4848

49-
free(repo->commondir);
49+
FREE_AND_NULL(repo->commondir);
5050

5151
if (commondir) {
5252
repo->different_commondir = 1;

0 commit comments

Comments
 (0)