mirror of
https://github.com/git/git.git
synced 2025-09-10 22:44:50 +02:00
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 <thomas@slight.dev> Tested-by: Carlo Arenas <carenas@gmail.com> Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
94f6e3e283
commit
8174627b3d
@@ -116,6 +116,10 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
|
||||
if (!ce_path_match(istate, ce, &revs->prune_data, NULL))
|
||||
continue;
|
||||
|
||||
if (revs->diffopt.prefix &&
|
||||
strncmp(ce->name, revs->diffopt.prefix, revs->diffopt.prefix_length))
|
||||
continue;
|
||||
|
||||
if (ce_stage(ce)) {
|
||||
struct combine_diff_path *dpath;
|
||||
struct diff_filepair *pair;
|
||||
|
||||
Reference in New Issue
Block a user