Package: apt-file
Version: 2.4.0
Severity: important
Tags: patch
A known example in the archive:
apt-file search /zynaddsubfx/examples/Synth
Expected result:
zynaddsubfx-data: /usr/share/zynaddsubfx/examples/Synth Bells Choir Reverb.xmz
zynaddsubfx-data: /usr/share/zynaddsubfx/examples/Synth Piano Reverb.xmz
zynaddsubfx-data: /usr/share/zynaddsubfx/examples/Synth.xmz
Actual result:
zynaddsubfx-data: /usr/share/zynaddsubfx/examples/Synth.xmz
The bug is due to apt-file putting an incorrect prefix to the search
term, which assumes there will be no spaces in the filename after the
search team.
This affects -x / --regexp and --substring-match based searches.
However, -F based searches are unaffected (as they will only match the
full file name).
Patch being:
diff --git a/apt-file b/apt-file
index 8a1ba59..5aba425 100755
--- a/apt-file
+++ b/apt-file
@@ -350,8 +350,8 @@ sub grep_file($) {
}
if ( ! defined $Conf->{fixed_strings} && ! defined $Conf->{is_regexp} ) {
- $pattern .= '[^\s]*';
- $pattern2 .= '[^\s]*' if defined $pattern2;
+ $pattern .= '(?:.*[^\s])?';
+ $pattern2 .= '(?:.*[^\s])?' if defined $pattern2;
}
$pattern = "$pattern|$pattern2" if defined $pattern2;