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.