[PATCH 3/7] trace2: handle NULL values in tr2_sysenv config callback
- From
Jeff King <peff@peff.net>
- Date
- Dec 7, 2023, 07:11 UTC
- Message-ID
- <20231207071124.GC1276005@coredump.intra.peff.net>
- In-Reply-To
- <20231207071030.GA1275835@coredump.intra.peff.net>
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> --- trace2/tr2_sysenv.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/trace2/tr2_sysenv.c b/trace2/tr2_sysenv.c index d3ecac2772..048cdd5438 100644 --- a/trace2/tr2_sysenv.c +++ b/trace2/tr2_sysenv.c @@ -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;
-- 2.43.0.664.ga12c899002