[PATCH 3/5] config: add BUG() statement instead of possible segfault
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Sep 27, 2022, 14:08 UTC
- Message-ID
- <f277a7a429db8f54fa06dd1965d62ec491e6d84b.1664287711.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1369.git.1664287711.gitgitgadget@gmail.com>
From: Derrick Stolee <derrickstolee@github.com>
The git_die_config() method calls git_config_get_value_multi() but immediately navigates to its first value without checking if the result is NULL or empty. Callers should only call git_die_config() if there is at least one value for the given 'key', but such a mistaken use might slip through. It would be better to show a BUG() statement than a possible segfault.
Signed-off-by: Derrick Stolee <derrickstolee@github.com> --- config.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/config.c b/config.c index bf89afbdab0..0c41606c7d4 100644 --- a/config.c +++ b/config.c @@ -2833,8 +2833,13 @@ void git_die_config(const char *key, const char *err, ...) va_end(params); } values = git_config_get_value_multi(key); - kv_info = values->items[values->nr - 1].util; - git_die_config_linenr(key, kv_info->filename, kv_info->linenr); + + if (values && values->nr) { + kv_info = values->items[values->nr - 1].util; + git_die_config_linenr(key, kv_info->filename, kv_info->linenr); + } else { + BUG("expected a non-empty list of values"); + } } /*
-- gitgitgadget