diff: fix leak when parsing invalid ignore regex option
When parsing invalid ignore regexes passed via the `-I` option we don't free already-allocated memory, leading to a memory leak. Fix this. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
4dfd4f1dfe
commit
6b15d9ca7f
6
diff.c
6
diff.c
|
@ -5464,9 +5464,13 @@ static int diff_opt_ignore_regex(const struct option *opt,
|
|||
regex_t *regex;
|
||||
|
||||
BUG_ON_OPT_NEG(unset);
|
||||
|
||||
regex = xmalloc(sizeof(*regex));
|
||||
if (regcomp(regex, arg, REG_EXTENDED | REG_NEWLINE))
|
||||
if (regcomp(regex, arg, REG_EXTENDED | REG_NEWLINE)) {
|
||||
free(regex);
|
||||
return error(_("invalid regex given to -I: '%s'"), arg);
|
||||
}
|
||||
|
||||
ALLOC_GROW(options->ignore_regex, options->ignore_regex_nr + 1,
|
||||
options->ignore_regex_alloc);
|
||||
options->ignore_regex[options->ignore_regex_nr++] = regex;
|
||||
|
|
|
@ -8,6 +8,7 @@ test_description='Various diff formatting options'
|
|||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
. "$TEST_DIRECTORY"/lib-diff.sh
|
||||
|
||||
|
|
Loading…
Reference in New Issue