Package: exifprobe
Version: 2.0.1-1
Severity: normal
Tags: patch
exifgrep does not escape patterns passed to egrep properly, leading to
completely wrong behaviour because they are mis-interpreted as glob patterns
by the shell.
Commandline:
> cd /tmp; echo f > .foo; exifgrep '.*' ~/lib/pics/rl/2010-09-11/P1000944.JPG
Expected output:
FileName = /home/derf/lib/pics/rl/2010-09-11/P1000944.JPG
FileType = JPEG
FileSize = 4667969
JPEG.APP1 = @2:32156
[...]
Actual output:
..X0-lock: 954
..foo:f
The attached patch should fix this.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-5-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages exifprobe depends on:
ii libc6 2.11.2-6 Embedded GNU C Library: Shared lib
exifprobe recommends no packages.
exifprobe suggests no packages.
-- no debconf information
diff -u a/exifgrep b/exifgrep
--- a/exifgrep 2010-09-16 21:40:26.774929524 +0200
+++ b/exifgrep 2010-09-16 21:42:19.867969768 +0200
@@ -183,7 +183,7 @@
*) notpattern="$2"; shift; shift; break ;;
esac
;;
- *) pattern=$1; shift
+ *) pattern="$1"; shift
case $1 in
NOT) case "$2" in
-f) notpattern="-f $3"; shift; shift; shift; break ;;
@@ -213,17 +213,17 @@
# exifprobe -L output.
case $# in
- 0) egrep ${egrep_options} ${pattern} | format
+ 0) egrep ${egrep_options} "${pattern}" | format
;;
*) case $# in
1) ;;
*) nameopt="-n" ;; # Use names if more than one file
esac
case "${notpattern}" in
- "") ${PROBE} -L ${coloropt} ${nameopt} ${tagopt} $* | egrep ${egrep_options} ${pattern} | format ;;
+ "") ${PROBE} -L ${coloropt} ${nameopt} ${tagopt} $* | egrep ${egrep_options} "${pattern}" | format ;;
*) case "${pattern}" in
- "") ${PROBE} -L ${coloropt} ${nameopt} ${tagopt} $* | egrep ${egrep_options} -v ${notpattern} | format ;;
- *) ${PROBE} -L ${coloropt} ${nameopt} ${tagopt} $* | egrep ${egrep_options} ${pattern} | egrep -v ${notpattern} | format ;;
+ "") ${PROBE} -L ${coloropt} ${nameopt} ${tagopt} $* | egrep ${egrep_options} -v "${notpattern}" | format ;;
+ *) ${PROBE} -L ${coloropt} ${nameopt} ${tagopt} $* | egrep ${egrep_options} "${pattern}" | egrep -v "${notpattern}" | format ;;
esac
;;
esac