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

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to