summaryrefslogtreecommitdiff
path: root/builtin/diff.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2010-06-16 01:02:03 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-06-16 12:13:12 -0700
commit42f9852f3c7476b5608ad297443e6d459516f8c0 (patch)
tree9956d2c14b6c2cdddf405156e5ba31a0a51f5a14 /builtin/diff.c
parentgit-mailinfo documentation: clarify -u/--encoding (diff)
downloadtgif-42f9852f3c7476b5608ad297443e6d459516f8c0.tar.xz
common_prefix: simplify and fix scanning for prefixes
common_prefix() scans backwards from the far end of each 'next' pathspec, starting from 'len', shortening the 'prefix' using 'path' as a reference. However, there is a small opportunity for an out-of-bounds access because len is unconditionally set to prefix-1 after a "direct match" test failed. This means that if 'next' is shorter than prefix+2, we read past it. Instead of a minimal fix, simplify the loop: scan *forward* over the 'next' entry, remembering the last '/' where it matched the prefix known so far. This is far easier to read and also has the advantage that we only scan over each entry once. Acked-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/diff.c')
0 files changed, 0 insertions, 0 deletions