]> granicus.if.org Git - git/commitdiff
update-index: fix segfault with missing --cacheinfo argument
authorJeff King <peff@peff.net>
Wed, 4 Jun 2014 07:11:11 +0000 (03:11 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 4 Jun 2014 18:02:55 +0000 (11:02 -0700)
Running "git update-index --cacheinfo" without any further
arguments results in a segfault rather than an error
message. Commit ec160ae (update-index: teach --cacheinfo a
new syntax "mode,sha1,path", 2014-03-23) added code to
examine the format of the argument, but forgot to handle the
NULL case.

Returning an error from the parser is enough, since we then
treat it as an old-style "--cacheinfo <mode> <sha1> <path>",
and complain that we have less than 3 arguments to read.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/update-index.c
t/t2107-update-index-basic.sh

index ba54e19cd559018fcca52b5251bffa78165e16a3..ebea285e1b6863bdb8e4b2a30d1487d18ecc5084 100644 (file)
@@ -637,6 +637,9 @@ static int parse_new_style_cacheinfo(const char *arg,
        unsigned long ul;
        char *endp;
 
+       if (!arg)
+               return -1;
+
        errno = 0;
        ul = strtoul(arg, &endp, 8);
        if (errno || endp == arg || *endp != ',' || (unsigned int) ul != ul)
index fe2fb17102cdc17168ae2d683d7d51a0b3e3f3bc..1bafb9098c7fae33969e9231fbdee1c0370830a1 100755 (executable)
@@ -29,6 +29,10 @@ test_expect_success 'update-index -h with corrupt index' '
        test_i18ngrep "[Uu]sage: git update-index" broken/usage
 '
 
+test_expect_success '--cacheinfo complains of missing arguments' '
+       test_must_fail git update-index --cacheinfo
+'
+
 test_expect_success '--cacheinfo does not accept blob null sha1' '
        echo content >file &&
        git add file &&