aboutsummaryrefslogtreecommitdiffstats
path: root/compat/regex/regexec.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-06-12 10:03:23 +0200
committerJunio C Hamano <gitster@pobox.com>2024-06-12 12:57:18 -0700
commit524c0183c999c59940ce1a8712b78e4dbd87ae60 (patch)
treef3795af6ad2bd425b4bf83b3c2d5398afb93273a /compat/regex/regexec.c
parentSync with 'maint' (diff)
downloadgit-524c0183c999c59940ce1a8712b78e4dbd87ae60.tar.gz
git-524c0183c999c59940ce1a8712b78e4dbd87ae60.zip
config: fix segfault when parsing "core.abbrev" without repo
The "core.abbrev" config allows the user to specify the minimum length when abbreviating object hashes. Next to the values "auto" and "no", this config also accepts a concrete length that needs to be bigger or equal to the minimum length and smaller or equal to the hash algorithm's hex length. While the former condition is trivial, the latter depends on the object format used by the current repository. It is thus a variable upper boundary that may either be 40 (SHA-1) or 64 (SHA-256). This has two major downsides. First, the user that specifies this config must be aware of the object hashes that its repository use. If they want to configure the value globally, then they cannot pick any value in the range `[41, 64]` if they have any repository that uses SHA-1. If they did, Git would error out when parsing the config. Second, and more importantly, parsing "core.abbrev" crashes when outside of a Git repository because we dereference `the_hash_algo` to figure out its hex length. Starting with c8aed5e8da (repository: stop setting SHA1 as the default object hash, 2024-05-07) though, we stopped initializing `the_hash_algo` outside of Git repositories. Fix both of these issues by not making it an error anymore when the given length exceeds the hash length. Instead, leave the abbreviated length intact. `repo_find_unique_abbrev_r()` handles this just fine except for a performance penalty which we will fix in a subsequent commit. Reported-by: Kyle Lippincott <spectral@google.com> Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/regex/regexec.c')
0 files changed, 0 insertions, 0 deletions