diff options
author | Jeff King <peff@peff.net> | 2014-06-04 03:11:11 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-06-04 11:02:55 -0700 |
commit | c8e1ee4f2c8e28b7eef824248f09ba37599593d7 (patch) | |
tree | 664131d572172bff66933e0bea31c4f0c20f0c6c /builtin/update-index.c | |
parent | b6c2a0d45d4165dfd326bd7a28e66d9cedb8ae84 (diff) | |
download | git-c8e1ee4f2c8e28b7eef824248f09ba37599593d7.tar.gz |
update-index: fix segfault with missing --cacheinfo argumentjc/rev-parse-argh-dashed-multi-words
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>
Diffstat (limited to 'builtin/update-index.c')
-rw-r--r-- | builtin/update-index.c | 3 |
1 files changed, 3 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) |