diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2022-07-19 00:10:55 +0300 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2022-07-24 11:38:19 +0300 |
commit | 6351ea1afb261ec9be95f808bcbe724e0da4ae09 (patch) | |
tree | ec9075996493c15728442c01feb91fcf31147d5b | |
parent | xzgrep: Use grep -H --label when available (GNU, *BSDs). (diff) | |
download | xz-6351ea1afb261ec9be95f808bcbe724e0da4ae09.tar.xz |
xzgrep: Make the fix for ZDI-CAN-16587 more robust.
I don't know if this can make a difference in the real world
but it looked kind of suspicious (what happens with sed
implementations that cannot process very long lines?).
At least this commit shouldn't make it worse.
Diffstat (limited to '')
-rw-r--r-- | src/scripts/xzgrep.in | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/scripts/xzgrep.in b/src/scripts/xzgrep.in index dd0643d6..78f5bd31 100644 --- a/src/scripts/xzgrep.in +++ b/src/scripts/xzgrep.in @@ -223,7 +223,10 @@ for i; do case $i in (*' '* | *'&'* | *'\'* | *'|'*) - i=$(printf '%s\n' "$i" | LC_ALL=C sed 's/[&\|]/\\&/g; $!s/$/\\/');; + # If sed fails, set i to a known safe string to ensure that + # failing sed didn't create a half-escaped dangerous string. + i=$(printf '%s\n' "$i" | LC_ALL=C sed 's/[&\|]/\\&/g; $!s/$/\\/') || + i='(unknown filename):';; esac # $i already ends with a colon so don't add it here. |