Commit ecc722c3bd3eaa4113201e015f776bb0f734adbd

Wilhelm Bierbaum 2022-03-16T10:25:11

Fix a string parsing bug when validating extensions from the configuration As builtin extensions are evaluated in the latter half of `check_valid_extension`, a string `cfg` is concatenated with the static string 'extension.' and the value from `builtin_extension`, before being compared with the configured value. This string is not being cleared while iterating through the names of the extensions. Because there is currently only one extension ('noop'), the bug was never noticible. This patch corrects the behavior by clearing the string on each iteration, as is done in the first block.

1
2
3
4
5
6
7
8
9
10
11
12
diff --git a/src/libgit2/repository.c b/src/libgit2/repository.c
index 80b4a98..f202623 100644
--- a/src/libgit2/repository.c
+++ b/src/libgit2/repository.c
@@ -1462,6 +1462,7 @@ static int check_valid_extension(const git_config_entry *entry, void *payload)
 	}
 
 	for (i = 0; i < ARRAY_SIZE(builtin_extensions); i++) {
+		git_str_clear(&cfg);
 		extension = builtin_extensions[i];
 
 		if ((error = git_str_printf(&cfg, "extensions.%s", extension)) < 0)