From: Junio C Hamano Date: Wed, 12 Jun 2024 20:37:17 +0000 (-0700) Subject: Merge branch 'jk/sparse-leakfix' X-Git-Tag: v2.46.0-rc0~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51ea70c18ad4646fdcccdce72a1a457f7ada6297;p=thirdparty%2Fgit.git Merge branch 'jk/sparse-leakfix' Many memory leaks in the sparse-checkout code paths have been plugged. * jk/sparse-leakfix: sparse-checkout: free duplicate hashmap entries sparse-checkout: free string list after displaying sparse-checkout: free pattern list in sparse_checkout_list() sparse-checkout: free sparse_filename after use sparse-checkout: refactor temporary sparse_checkout_patterns sparse-checkout: always free "line" strbuf after reading input sparse-checkout: reuse --stdin buffer when reading patterns dir.c: always copy input to add_pattern() dir.c: free removed sparse-pattern hashmap entries sparse-checkout: clear patterns when init() sees existing sparse file dir.c: free strings in sparse cone pattern hashmaps sparse-checkout: pass string literals directly to add_pattern() sparse-checkout: free string list in write_cone_to_file() --- 51ea70c18ad4646fdcccdce72a1a457f7ada6297 diff --cc dir.c index ad2b7ebe2d,8308d167c8..45be4ad261 --- a/dir.c +++ b/dir.c @@@ -1155,13 -1159,8 +1166,14 @@@ static int add_patterns(const char *fna } } + if (size > PATTERN_MAX_FILE_SIZE) { + warning("ignoring excessively large pattern file: %s", fname); + free(buf); + return -1; + } + add_patterns_from_buffer(buf, size, base, baselen, pl); + free(buf); return 0; } @@@ -1217,14 -1215,8 +1228,15 @@@ int add_patterns_from_blob_to_list if (r != 1) return r; + if (size > PATTERN_MAX_FILE_SIZE) { + warning("ignoring excessively large pattern blob: %s", + oid_to_hex(oid)); + free(buf); + return -1; + } + add_patterns_from_buffer(buf, size, base, baselen, pl); + free(buf); return 0; }