Merge branch 'ds/sparse-checkout-malformed-pattern-fix'

Certain sparse-checkout patterns that are valid in non-cone mode
led to segfault in cone mode, which has been corrected.

* ds/sparse-checkout-malformed-pattern-fix:
  sparse-checkout: refuse to add to bad patterns
  sparse-checkout: fix OOM error with mixed patterns
  sparse-checkout: fix segfault on malformed patterns
This commit is contained in:
Junio C Hamano
2022-01-10 11:52:49 -08:00
3 changed files with 42 additions and 6 deletions

View File

@ -504,7 +504,7 @@ static void insert_recursive_pattern(struct pattern_list *pl, struct strbuf *pat
char *oldpattern = e->pattern;
size_t newlen;
if (slash == e->pattern)
if (!slash || slash == e->pattern)
break;
newlen = slash - e->pattern;
@ -612,6 +612,9 @@ static void add_patterns_cone_mode(int argc, const char **argv,
die(_("unable to load existing sparse-checkout patterns"));
free(sparse_filename);
if (!existing.use_cone_patterns)
die(_("existing sparse-checkout patterns do not use cone mode"));
hashmap_for_each_entry(&existing.recursive_hashmap, &iter, pe, ent) {
if (!hashmap_contains_parent(&pl->recursive_hashmap,
pe->pattern, &buffer) ||