mirror of
https://github.com/git/git.git
synced 2024-10-28 12:59:41 +01:00
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>
This commit is contained in:
parent
98fa5b6851
commit
a8db80c224
1 changed files with 2 additions and 2 deletions
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue