diff mbox series

[1/2] notes.c: fix a segfault in notes_display_config()

Message ID 20201123032342.24566-2-nate@roosteregg.cc (mailing list archive)
State Accepted
Commit c3eb95a0d759d80d53ccb396627c400cd3db6e6d
Headers show
Series Fix a segfault in git log --notes | expand

Commit Message

nate@roosteregg.cc Nov. 23, 2020, 3:23 a.m. UTC
From: Nate Avers <nate@roosteregg.cc>

If notes.displayRef is configured with no value[1], control should be
returned to the caller when notes.c:notes_display_config() checks if 'v'
is NULL. Otherwise, both git log --notes and git diff-tree --notes will
subsequently segfault when refs.h:has_glob_specials() calls strpbrk()
with a NULL first argument.

[1] Examples:
$ git -c notes.displayRef [...]

Signed-off-by: Nate Avers <nate@roosteregg.cc>
 notes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


Junio C Hamano Nov. 23, 2020, 6:59 a.m. UTC | #1
nate@roosteregg.cc writes:

>  	if (*load_refs && !strcmp(k, "notes.displayref")) {
>  		if (!v)
> -			config_error_nonbool(k);
> +			return config_error_nonbool(k);

"git grep config_error_nonbool" tells us that this is the only
instance that ignores the return value from the function and does
not cause the caller to die.

Looks good.  Thanks.
diff mbox series


diff --git a/notes.c b/notes.c
index 564baac64d..d5ac081e76 100644
--- a/notes.c
+++ b/notes.c
@@ -970,7 +970,7 @@  static int notes_display_config(const char *k, const char *v, void *cb)
 	if (*load_refs && !strcmp(k, "notes.displayref")) {
 		if (!v)
-			config_error_nonbool(k);
+			return config_error_nonbool(k);
 		string_list_add_refs_by_glob(&display_notes_refs, v);