Message ID | 0750191342754bcca398c6fdad522616b0f3fbc3.1599026986.git.matheus.bernardino@usp.br (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | grep: honor sparse checkout and add option to ignore it | expand |
On Wed, Sep 2, 2020 at 2:18 AM Matheus Tavares <matheus.bernardino@usp.br> wrote: > Check that we have the expected argc in 'configset_get_value' and > 'configset_get_value_multi' before trying to access argv elements. > > Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> > --- > diff --git a/t/helper/test-config.c b/t/helper/test-config.c > @@ -138,7 +138,7 @@ int cmd__config(int argc, const char **argv) > - } else if (!strcmp(argv[1], "configset_get_value")) { > + } else if (argc >= 3 && !strcmp(argv[1], "configset_get_value")) { > for (i = 3; i < argc; i++) { > @@ -156,7 +156,7 @@ int cmd__config(int argc, const char **argv) > printf("Value not found for \"%s\"\n", argv[2]); This is certainly a bug fix since it was accessing argv[2] without checking that that element was even present, but the more significant outcome of this change is that it now correctly diagnoses when these two commands are called with the wrong number of arguments (just like all the other commands -- except "iterate" -- diagnose incorrect number of arguments). It might make sense, therefore, for the commit message to focus on that improvement and mention the out-of-bounds array access fix as a side-effect. However, that itself is not worth a re-roll.
diff --git a/t/helper/test-config.c b/t/helper/test-config.c index 9e9d50099a..26d9c2ac4c 100644 --- a/t/helper/test-config.c +++ b/t/helper/test-config.c @@ -138,7 +138,7 @@ int cmd__config(int argc, const char **argv) printf("Value not found for \"%s\"\n", argv[2]); goto exit1; } - } else if (!strcmp(argv[1], "configset_get_value")) { + } else if (argc >= 3 && !strcmp(argv[1], "configset_get_value")) { for (i = 3; i < argc; i++) { int err; if ((err = git_configset_add_file(&cs, argv[i]))) { @@ -156,7 +156,7 @@ int cmd__config(int argc, const char **argv) printf("Value not found for \"%s\"\n", argv[2]); goto exit1; } - } else if (!strcmp(argv[1], "configset_get_value_multi")) { + } else if (argc >= 3 && !strcmp(argv[1], "configset_get_value_multi")) { for (i = 3; i < argc; i++) { int err; if ((err = git_configset_add_file(&cs, argv[i]))) {
Check that we have the expected argc in 'configset_get_value' and 'configset_get_value_multi' before trying to access argv elements. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> --- t/helper/test-config.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)