summaryrefslogtreecommitdiff
path: root/builtin-clean.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2008-01-12 04:04:32 -0500
committerJunio C Hamano <gitster@pobox.com>2008-01-12 11:10:09 -0800
commita8db80c22494396a81d2b4b7f4082c369fc0f78d (patch)
treea1c42f69d955bb552c87a4307c9c41e426c921bf /builtin-clean.c
parent98fa5b68512b9d02d8d47e726bfaec4d33598246 (diff)
downloadgit-a8db80c22494396a81d2b4b7f4082c369fc0f78d.tar.gz
git-clean: fix off-by-one memory access when given no arguments
The "seen" variable is used by match_pathspec, and must have as many elements as there are in the given pathspec. We create the pathspec either from the command line arguments _or_ from just the current prefix. Thus allocating "seen" based upon just argc is wrong, since if argc == 0, then we still have one pathspec, the prefix, but we don't allocate any space in "seen". Signed-off-by: Jeff King <peff@peff.net> Tested-by: İsmail Dönmez <ismail@pardus.org.tr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-clean.c')
-rw-r--r--builtin-clean.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/builtin-clean.c b/builtin-clean.c
index 6cad8eaf25..eb853a37cf 100644
--- a/builtin-clean.c
+++ b/builtin-clean.c
@@ -90,7 +90,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
strbuf_init(&directory, 0);
if (pathspec)
- seen = xmalloc(argc);
+ seen = xmalloc(argc > 0 ? argc : 1);
for (i = 0; i < dir.nr; i++) {
struct dir_entry *ent = dir.entries[i];
@@ -125,7 +125,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
continue;
if (pathspec) {
- memset(seen, 0, argc);
+ memset(seen, 0, argc > 0 ? argc : 1);
matches = match_pathspec(pathspec, ent->name, ent->len,
baselen, seen);
} else {