config: handle NULL value when parsing non-bools
commitba176db511b3438738a4aeb98e574310e697ff5f
authorJeff King <peff@peff.net>
Thu, 7 Dec 2023 07:11:14 +0000 (7 02:11 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 8 Dec 2023 23:24:39 +0000 (9 08:24 +0900)
tree647a878be2c8d0f0d48a8f74f9f9fcfc051fecd1
parent564d0252ca632e0264ed670534a51d18a689ef5d
config: handle NULL value when parsing non-bools

When the config parser sees an "implicit" bool like:

  [core]
  someVariable

it passes NULL to the config callback. Any callback code which expects a
string must check for NULL. This usually happens via helpers like
git_config_string(), etc, but some custom code forgets to do so and will
segfault.

These are all fairly vanilla cases where the solution is just the usual
pattern of:

  if (!value)
        return config_error_nonbool(var);

though note that in a few cases we have to split initializers like:

  int some_var = initializer();

into:

  int some_var;
  if (!value)
        return config_error_nonbool(var);
  some_var = initializer();

There are still some broken instances after this patch, which I'll
address on their own in individual patches after this one.

Reported-by: Carlos Andrés Ramírez Cataño <antaigroupltda@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/blame.c
builtin/checkout.c
builtin/clone.c
builtin/log.c
builtin/pack-objects.c
compat/mingw.c
config.c
diff.c
mailinfo.c
notes-utils.c
trailer.c