threads / patch / 36832

patchupdate-index: fix segfault with missing --cacheinfo argument

Subject: [PATCH] update-index: fix segfault with missing --cacheinfo argument

## tl;dr

2 messages between Jun 4, 2014 and Jun 4, 2014. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Jeff King· Jun 4, 2014, 07:11 UTC · lore

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>
---
 builtin/update-index.c        | 3 +++
 t/t2107-update-index-basic.sh | 4 ++++
 2 files changed, 7 insertions(+)
Show changes to 2 files +7 −0

builtin/update-index.c, t/t2107-update-index-basic.sh

diff --git a/builtin/update-index.c b/builtin/update-index.c
index ba54e19..ebea285 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 fe2fb17..1bafb90 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 &&
-- 
2.0.0.rc1.436.g03cb729
Junio C Hamano· Jun 4, 2014, 18:03 UTC · re: Jeff King · lore

Re: [PATCH] update-index: fix segfault with missing --cacheinfo argument

Jeff King <peff@peff.net> writes:
Show 13 quoted lines
> 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>
> ---
Thanks.

← back to recent threads