Package: dpkg Version: 1.18.24 Severity: important Hi,
They are some problem regarding pipe in dpkg-maintscript-helper. I have done some work for one function, and I can continue for other functions if needed cat /nonexistant | sed s/alpha//g will return sucess... I have fixed md5sum will continue if you think it is worthwhile
diff --git a/scripts/dpkg-maintscript-helper.sh b/scripts/dpkg-maintscript-helper.sh
index 378d03c15..e1806e253 100755
--- a/scripts/dpkg-maintscript-helper.sh
+++ b/scripts/dpkg-maintscript-helper.sh
@@ -84,6 +84,34 @@ rm_conffile() {
esac
}
+
+safe_get_md5sum() {
+ local FILE="$1"
+ local error_md5
+
+ exec 4>&1
+ error_md5=$( ( (md5sum < $FILE ; echo "$?" >&3 ) | sed -e 's/ .*//' ) 3>&1 >&4) || \
+ error "md5sum fail for '$FILE'"
+ exec 4>&-
+ test X"$error_md5" = "X0" || \
+ error "md5sum program fail with exit code '$error_md5' for '$FILE'"
+}
+
+safe_get_old_conf_md5sum() {
+ local CONFFILE="$1"
+ local PACKAGE="$2"
+ local error_dpkg_q
+ exec 4>&1
+ error_dpkg_q=$( ( \
+ (dpkg-query -W -f='${Conffiles}' "$PACKAGE" ; echo "$?" >&3 ) \
+ | sed -n -e "\'^ $CONFFILE ' { s/ obsolete$//; s/.* //; p }" \
+ ) 3>&1 >&4) || \
+ error "Could not get old md5sum for '$FILE'"
+ exec 4>&-
+ test X"$error_dpkg_q" = "X0" || \
+ error "dpkg-query fail for conffile '$CONFFILE' for package '$PACKAGE'"
+}
+
prepare_rm_conffile() {
local CONFFILE="$1"
local PACKAGE="$2"
@@ -92,9 +120,8 @@ prepare_rm_conffile() {
ensure_package_owns_file "$PACKAGE" "$CONFFILE" || return 0
local md5sum old_md5sum
- md5sum="$(md5sum "$CONFFILE" | sed -e 's/ .*//')"
- old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$PACKAGE" | \
- sed -n -e "\'^ $CONFFILE ' { s/ obsolete$//; s/.* //; p }")"
+ md5sum="$(safe_get_md5sum "$CONFFILE")"
+ old_md5sum="$(safe_get_old_conf_md5sum "$CONFFILE" "$PACKAGE")"
if [ "$md5sum" != "$old_md5sum" ]; then
mv -f "$CONFFILE" "$CONFFILE.dpkg-backup"
else
signature.asc
Description: This is a digitally signed message part.

