[PATCH] config.c: NULL check when reading protected config
- From
Glen Choo via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jul 26, 2022, 17:09 UTC
- Message-ID
- <pull.1299.git.git.1658855372189.gitgitgadget@gmail.com>
From: Glen Choo <chooglen@google.com>
In read_protected_config(), check whether each file name is NULL before attempting to read it. This mirrors do_git_config_sequence() (which read_protected_config() is modelled after).
Without these NULL checks,
make SANITIZE=address test T=t0410*.sh
fails because xdg_config is NULL, causing us to call fopen(NULL).
Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Glen Choo <chooglen@google.com>
---
config.c: NULL check when reading protected config
This fixes the SANITIZE=address failure on master, That was introduced
by gc/bare-repo-discovery. Thanks again to Ævar for the original report
[1] and for proposing a way to catch this in CI [2].
[1]
https://lore.kernel.org/git/220725.861qu9oxl4.gmgdl@evledraar.gmail.com
[2]
https://lore.kernel.org/git/patch-1.1-e48b6853dd5-20220726T110716Z-avarab@gmail.comPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1299%2Fchooglen%2Fconfig%2Ffix-sanitize-address-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1299/chooglen/config/fix-sanitize-address-v1 Pull-Request: https://github.com/git/git/pull/1299
config.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/config.c b/config.c index 015bec360f5..b0ba7f439a4 100644 --- a/config.c +++ b/config.c @@ -2645,9 +2645,12 @@ static void read_protected_config(void) system_config = git_system_config(); git_global_config(&user_config, &xdg_config); - git_configset_add_file(&protected_config, system_config); - git_configset_add_file(&protected_config, xdg_config); - git_configset_add_file(&protected_config, user_config); + if (system_config) + git_configset_add_file(&protected_config, system_config); + if (xdg_config) + git_configset_add_file(&protected_config, xdg_config); + if (user_config) + git_configset_add_file(&protected_config, user_config); git_configset_add_parameters(&protected_config); free(system_config); base-commit: 6a475b71f8c4ce708d69fdc9317aefbde3769e25
-- gitgitgadget