]> git.ipfire.org Git - thirdparty/git.git/commitdiff
trace2: handle NULL values in tr2_sysenv config callback
authorJeff King <peff@peff.net>
Thu, 7 Dec 2023 07:11:24 +0000 (02:11 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 8 Dec 2023 23:24:47 +0000 (08:24 +0900)
If you have config with an implicit bool like:

  [trace2]
  envvars

we'll segfault, as we unconditionally try to xstrdup() the value. We
should instead detect and complain, as a boolean value has no meaning
here. The same is true for every variable in tr2_sysenv_settings (and
this patch covers them all, as we check them in a loop).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
trace2/tr2_sysenv.c

index d3ecac27728efe8c06dd78f6e394d789d4c1bc7e..048cdd543830418bfe53957b278ab654ecfdcb66 100644 (file)
@@ -68,6 +68,8 @@ static int tr2_sysenv_cb(const char *key, const char *value,
 
        for (k = 0; k < ARRAY_SIZE(tr2_sysenv_settings); k++) {
                if (!strcmp(key, tr2_sysenv_settings[k].git_config_name)) {
+                       if (!value)
+                               return config_error_nonbool(key);
                        free(tr2_sysenv_settings[k].value);
                        tr2_sysenv_settings[k].value = xstrdup(value);
                        return 0;