update-index: fix segfault with missing --cacheinfo argument
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>
Jeff King committed
Jun 4, 2014 at 03:11 UTC
c8e1ee4f2c8e28b7eef824248f09ba37599593d7
2 files changed
+7
builtin/update-index.c
+3
@@ -637,6 +637,9 @@ static int parse_new_style_cacheinfo(const char *arg,
637
unsigned long ul;
638
char *endp;
639
640
+ if (!arg)
641
+ return -1;
642
+
643
errno = 0;
644
ul = strtoul(arg, &endp, 8);
645
if (errno || endp == arg || *endp != ',' || (unsigned int) ul != ul)
t/t2107-update-index-basic.sh
+4
@@ -29,6 +29,10 @@ test_expect_success 'update-index -h with corrupt index' '
29
test_i18ngrep "[Uu]sage: git update-index" broken/usage
30
'
31
32
+test_expect_success '--cacheinfo complains of missing arguments' '
33
+ test_must_fail git update-index --cacheinfo
34
+'
35
+
36
test_expect_success '--cacheinfo does not accept blob null sha1' '
37
echo content >file &&
38
git add file &&