setup: handle NULL value when parsing extensions

The "partialclone" extension config records a string, and hence it is an error to have an implicit bool like: [extensions] partialclone in your config. We should recognize and reject this, rather than segfaulting (which is the current behavior). Note that it's OK to use config_error_nonbool() here, even though the return value is an enum. We explicitly document EXTENSION_ERROR as -1 for compatibility with error(), etc. This is the only extension value that has this problem. Most of the others are bools that interpret this value naturally. The exception is extensions.objectformat, which does correctly check for NULL. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Dec 7, 2023 at 02:11 UTC a62712696e76eddebf9b5e0ecf2c9040558584bb
1 file changed +2
setup.c
+2
@@ -559,6 +559,8 @@ static enum extension_result handle_extension_v0(const char *var,
559 data->precious_objects = git_config_bool(var, value);
560 return EXTENSION_OK;
561 } else if (!strcmp(ext, "partialclone")) {
562 + if (!value)
563 + return config_error_nonbool(var);
564 data->partial_clone = xstrdup(value);
565 return EXTENSION_OK;
566 } else if (!strcmp(ext, "worktreeconfig")) {