зеркало из https://github.com/microsoft/git.git
status: fix for old-style submodules with commondir
Inf9b7573f6b
(repository: free fields before overwriting them, 2017-09-05), Git was taught to release memory before overwriting it, but357a03ebe9
(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 https://github.com/git-for-windows/git/pull/4083. Signed-off-by: Andrey Zabavnikov <zabavnikov@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Родитель
9bce0f18c5
Коммит
3982fcfdef
|
@ -48,7 +48,7 @@ static void repo_set_commondir(struct repository *repo,
|
||||||
{
|
{
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
|
|
||||||
free(repo->commondir);
|
FREE_AND_NULL(repo->commondir);
|
||||||
|
|
||||||
if (commondir) {
|
if (commondir) {
|
||||||
repo->different_commondir = 1;
|
repo->different_commondir = 1;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче