Package: xen-tools Version: 4.5-1 Severity: normal Tags: patch
Hello again,
I had an issue with enableStartStopDaemon and disableStartStopDaemon
after the security update of dpkg in June 2014 [1]. The upgrade of the
dpkg package after enableStartStopDaemon was called caused the stub
starter to be overwritten. This resulted in some services being started
in my dom0. Also /sbin/start-stop-daemon was reverted to the version
prior to the security update by disableStartStopDaemon.
I have worked around the issue using dpkg-divert, patch attached. If
you feel this is the wrong way to fix the issue for any reason feel
free to disregard the patch. I am using the patched version since June
and it seems to work fine. If I didn't make a mistake, this approach
should only fail if a "starter" is already dpkg-diverted or the
"${daemonfile}.REAL" file I'm diverting to already exists (which both
shouldn't be the case for a new install).
Sorry for not reporting this earlier, I only remembered it after
reporting the other issue earlier today. Thank you for developing and
maintaining xen-tools!
Regards
Lukas
[1] https://lists.debian.org/debian-security-announce/2014/msg00133.html
diff --git a/hooks/common.sh b/hooks/common.sh
index 02668ec..0c0841e 100755
--- a/hooks/common.sh
+++ b/hooks/common.sh
@@ -272,16 +272,14 @@ disableStartStopDaemon ()
local prefix="$1"
assert "$LINENO" "${prefix}"
for starter in start-stop-daemon initctl; do
- local daemonfile="${prefix}/sbin/${starter}"
+ local daemonfile="/sbin/${starter}"
- if [ -e "${daemonfile}" ]; then
- mv "${daemonfile}" "${daemonfile}.REAL"
- echo '#!/bin/sh' > "${daemonfile}"
- echo "echo \"Warning: Fake ${starter} called, doing nothing\"" >> "${daemonfile}"
+ chroot "${prefix}" dpkg-divert --divert "${daemonfile}.REAL" --local --rename "${daemonfile}"
+ echo '#!/bin/sh' > "${prefix}${daemonfile}"
+ echo "echo \"Warning: Fake ${starter} called, doing nothing\"" >> "${prefix}${daemonfile}"
- chmod 755 "${daemonfile}"
- logMessage "${starter} disabled / made a stub."
- fi
+ chmod 755 "${prefix}${daemonfile}"
+ logMessage "${starter} disabled / made a stub."
done
}
@@ -295,15 +293,14 @@ enableStartStopDaemon ()
local prefix=$1
assert "$LINENO" "${prefix}"
for starter in start-stop-daemon initctl; do
- local daemonfile="${prefix}/sbin/${starter}"
-
- #
- # If the disabled file is present then enable it.
- #
- if [ -e "${daemonfile}.REAL" ]; then
- mv "${daemonfile}.REAL" "${daemonfile}"
- logMessage "${starter} restored to working order."
+ local daemonfile="/sbin/${starter}"
+
+ # remove the local diversion if it is in place
+ if [ "`chroot "${prefix}" dpkg-divert --listpackage "${daemonfile}"`a" = "LOCALa" ]; then
+ rm -f "${prefix}${daemonfile}"
+ chroot "${prefix}" dpkg-divert --rename --remove "${daemonfile}"
fi
+ logMessage "${starter} restored to working order."
done
}
pgp1sX70ugSHe.pgp
Description: OpenPGP digital signature

