]> git.99rst.org Git - git.git/commit
diff-lib: ignore paths that are outside $cwd if --relative asked
authorĐoàn Trần Công Danh <redacted>
Sun, 22 Aug 2021 08:49:08 +0000 (15:49 +0700)
committerJunio C Hamano <redacted>
Wed, 25 Aug 2021 18:49:36 +0000 (11:49 -0700)
commit8174627b3d32dc80cb477b3fa46971955f26c6b2
treef95c3b02e248fa8b5cd5dfb75d2e18850320bc3c
parent94f6e3e283f2adfc518b39cfc39291f1c2832ad0
diff-lib: ignore paths that are outside $cwd if --relative asked

For diff family commands, we can tell them to exclude changes outside
of some directories if --relative is requested.

In diff_unmerge(), NULL will be returned if the requested path is
outside of the interesting directories, thus we'll run into NULL
pointer dereference in run_diff_files when trying to dereference
its return value.

Checking for return value of diff_unmerge before dereferencing
is not sufficient, though. Since, diff engine will try to work on such
pathspec later.

Let's not run diff on those unintesting entries, instead.
As a side effect, by skipping like that, we can save some CPU cycles.

Reported-by: Thomas De Zeeuw <redacted>
Tested-by: Carlo Arenas <redacted>
Signed-off-by: Đoàn Trần Công Danh <redacted>
Signed-off-by: Junio C Hamano <redacted>
diff-lib.c
t/t4045-diff-relative.sh
git clone https://git.99rst.org/PROJECT