diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-06-09 11:26:49 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-09 11:26:49 -0700 |
commit | 0147602c2bf1fff790b06295e6139117a381b206 (patch) | |
tree | 6b47cc8081c2fe556a3a01d1c20880c90b182c61 | |
parent | bfbdfa33f6d491904a7d4390280dfc695ec9ae1a (diff) | |
parent | c8e1ee4f2c8e28b7eef824248f09ba37599593d7 (diff) | |
download | git-0147602c2bf1fff790b06295e6139117a381b206.tar.gz |
Merge branch 'jc/rev-parse-argh-dashed-multi-words'
"update-index --cacheinfo" in 2.0 crashes on a malformed command line.
* jc/rev-parse-argh-dashed-multi-words:
update-index: fix segfault with missing --cacheinfo argument
-rw-r--r-- | builtin/update-index.c | 3 | ||||
-rwxr-xr-x | t/t2107-update-index-basic.sh | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/builtin/update-index.c b/builtin/update-index.c index ba54e19cd5..ebea285e1b 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -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) diff --git a/t/t2107-update-index-basic.sh b/t/t2107-update-index-basic.sh index fe2fb17102..1bafb9098c 100755 --- a/t/t2107-update-index-basic.sh +++ b/t/t2107-update-index-basic.sh @@ -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 && |