Bug: combined diff with --ignore-matching-lines
From: René Scharfe <hidden>
Date: 2022-05-14 09:33:02
Hi all,
git diff segfaults when it's asked to produce a combined diff and ignore
certain lines with --ignore-matching-lines/-I, e.g.:
$ git diff -I DEF_VER v2.33.3 v2.33.3^@
zsh: segmentation fault ./git-diff -I DEF_VER v2.33.3 v2.33.3^@
That's because combine-diff.c::diff_tree_combined() copies a diffopt
without making a deep copy of the ignore_regex array and frees it, then
later tries to use it.
The segfault can be fixed by adding "diffopt.no_free = 1;" or reverting
c45dc9cf30 (diff: plug memory leak from regcomp() on {log,diff} -I,
2021-02-11).
But even with that the only thing the command ignores is the option -I;
the GIT-VERSION-GEN changes in the middle should have been omitted:
$ git diff -I DEF_VER v2.33.3 v2.33.3^@
diff --cc Documentation/RelNotes/2.33.3.txt
index 0000000000,0000000000..e2bada12a1
new file mode 100644
--- /dev/null
+++ b/Documentation/RelNotes/2.33.3.txt
@@@ -1,0 -1,0 +1,4 @@@
++Git Documentation/RelNotes/2.33.3.txt Release Notes
++=========================
++
++This release merges up the fixes that appear in v2.33.3.
diff --cc GIT-VERSION-GEN
index d81eab5f00,e7efe58866..86a3a2870c
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@@ -1,7 -1,7 +1,7 @@@
#!/bin/sh
GVF=GIT-VERSION-FILE
- DEF_VER=v2.33.2
-DEF_VER=v2.32.2
++DEF_VER=v2.33.3
LF='
'
diff --cc RelNotes
index 8e79de2efe,4ac68388c3..899139d9ec
--- a/RelNotes
+++ b/RelNotes
@@@ -1,1 -1,1 +1,1 @@@
- Documentation/RelNotes/2.33.2.txt
-Documentation/RelNotes/2.32.2.txt
++Documentation/RelNotes/2.33.3.txt
Just setting need_generic_pathscan is not enough. Ideas?
René