Skip to content

Commit c8e1ee4

Browse files
peffgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b6c2a0d commit c8e1ee4

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

builtin/update-index.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,9 @@ static int parse_new_style_cacheinfo(const char *arg,
637637
unsigned long ul;
638638
char *endp;
639639

640+
if (!arg)
641+
return -1;
642+
640643
errno = 0;
641644
ul = strtoul(arg, &endp, 8);
642645
if (errno || endp == arg || *endp != ',' || (unsigned int) ul != ul)

t/t2107-update-index-basic.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ test_expect_success 'update-index -h with corrupt index' '
2929
test_i18ngrep "[Uu]sage: git update-index" broken/usage
3030
'
3131

32+
test_expect_success '--cacheinfo complains of missing arguments' '
33+
test_must_fail git update-index --cacheinfo
34+
'
35+
3236
test_expect_success '--cacheinfo does not accept blob null sha1' '
3337
echo content >file &&
3438
git add file &&

0 commit comments

Comments
 (0)