]> git.ipfire.org Git - thirdparty/git.git/commitdiff
submodule.c: free() memory from xgetcwd()
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Fri, 1 Jul 2022 10:42:52 +0000 (12:42 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 1 Jul 2022 18:43:42 +0000 (11:43 -0700)
Fix a memory leak in code added in bf0231c6614 (rev-parse: add
--show-superproject-working-tree, 2017-03-08), we should never have
made the result of xgetcwd() a "const char *", as we return a
strbuf_detach()'d value. Let's fix that and free() it when we're done
with it.

We can't mark any tests passing passing with SANITIZE=leak using
"TEST_PASSES_SANITIZE_LEAK=true" as a result of this change, but
e.g. "t/t1500-rev-parse.sh" now gets closer to passing.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c

index 4e299f578f96f17110114f441e6370085c452e40..06073b2e7be01f269178cd8cee6c649254c0637b 100644 (file)
@@ -2388,7 +2388,7 @@ int get_superproject_working_tree(struct strbuf *buf)
        struct child_process cp = CHILD_PROCESS_INIT;
        struct strbuf sb = STRBUF_INIT;
        struct strbuf one_up = STRBUF_INIT;
-       const char *cwd = xgetcwd();
+       char *cwd = xgetcwd();
        int ret = 0;
        const char *subpath;
        int code;
@@ -2451,6 +2451,7 @@ int get_superproject_working_tree(struct strbuf *buf)
                ret = 1;
                free(super_wt);
        }
+       free(cwd);
        strbuf_release(&sb);
 
        code = finish_command(&cp);