tags 295306 patch thanks Hi Jonas,
This RC bug has been open for a long time now, and there has been no activity on it for three weeks. I have prepared an NMU with the attached patch, based on the one prepared by Adeodato and Pierre but without the intrusive (and currently broken) template-based maintainer scripts. I will be uploading this to unstable shortly according to the 0-day NMU policy. Thanks, -- Steve Langasek postmodern programmer
diff -u uw-imap-2002edebian1/debian/changelog
uw-imap-2002edebian1/debian/changelog
--- uw-imap-2002edebian1/debian/changelog
+++ uw-imap-2002edebian1/debian/changelog
@@ -1,3 +1,14 @@
+uw-imap (7:2002edebian1-6.1) unstable; urgency=high
+
+ * Non-maintainer upload.
+ * High-urgency upload for sarge-targetted RC bugfix
+ * Handle inetd.conf correctly on upgrades, to not lose local
+ configuration changes; thanks to Pierre Habouzit
+ <[EMAIL PROTECTED]> and Adeodato Sim� <[EMAIL PROTECTED]> for
+ their work on this fix (closes: #295306).
+
+ -- Steve Langasek <[EMAIL PROTECTED]> Mon, 21 Mar 2005 04:59:48 -0800
+
uw-imap (7:2002edebian1-6) unstable; urgency=high
* Fix CERT security bug VU#702777: CRAM-MD5 authentication (disabled
diff -u uw-imap-2002edebian1/debian/ipopd.postrm
uw-imap-2002edebian1/debian/ipopd.postrm
--- uw-imap-2002edebian1/debian/ipopd.postrm
+++ uw-imap-2002edebian1/debian/ipopd.postrm
@@ -9,15 +9,21 @@
##
## Remove POP daemons from inetd.conf
##
+
+if [ "$1" = "purge" ]; then
+ UPDATE_INETD_ARG='--remove'
+else
+ # Note that we disable in upgrades too
+ UPDATE_INETD_ARG='--disable'
+fi
+
db_get ipopd/protocol
for i in `echo "$RET" | sed 's/,/ /g'`; do
- if [ "$i" = "pop2" ]; then
- update-inetd --remove pop2;
- elif [ "$i" = "pop3" ]; then
- update-inetd --remove pop3;
- elif [ "$i" = "pop3s" ]; then
- update-inetd --remove pop3s;
- fi
+ case "$i" in
+ pop2|pop3|pop3s)
+ update-inetd $UPDATE_INETD_ARG $i
+ ;;
+ esac
done
if [ "$1" = "purge" -a -f /etc/ssl/certs/ipop3d.pem ]; then
diff -u uw-imap-2002edebian1/debian/ipopd.postinst
uw-imap-2002edebian1/debian/ipopd.postinst
--- uw-imap-2002edebian1/debian/ipopd.postinst
+++ uw-imap-2002edebian1/debian/ipopd.postinst
@@ -2,21 +2,48 @@
set -e
+PROGRAM=ipopd
+
# Source debconf library.
. /usr/share/debconf/confmodule
db_version 2.0
-db_get ipopd/protocol
-for i in `echo "$RET" | sed 's/,/ /g'`; do
+if [ "$1" = "configure" ]; then
+ if [ -z "$2" ]; then
+ UPDATE_INETD_ARG='--group mail --add'
+ UPDATE_INETD_ARG_EXTRA=" stream tcp nowait root
/usr/sbin/tcpd"
+ else
+ UPDATE_INETD_ARG='--enable'
+
+ # Bug#295306
+ if dpkg --compare-versions "$2" le 7:2002edebian1-6
+ then
+ MY_FILE=/var/cache/${PROGRAM}_inetd.conf_copy
+ if [ -r "$MY_FILE" ]; then
+ while read line; do
+ update-inetd --group mail --add "$line"
+ done < "$MY_FILE"
+ rm -f "$MY_FILE"
+ else
+ # The file has disappeared, or we're installing from
+ # 'config files' state. Install default entries.
+ UPDATE_INETD_ARG='--group mail --add'
+ UPDATE_INETD_ARG_EXTRA=" stream tcp nowait root
/usr/sbin/tcpd"
+ fi
+ fi
+ fi
+ db_get ipopd/protocol
+ for i in `echo "$RET" | sed 's/,/ /g'`; do
if [ "$i" = "pop2" ]; then
- update-inetd --group mail --add "pop2 stream tcp nowait
root /usr/sbin/tcpd /usr/sbin/ipop2d"
+ update-inetd $UPDATE_INETD_ARG "pop2${UPDATE_INETD_ARG_EXTRA}
/usr/sbin/ipop2d"
elif [ "$i" = "pop3" ]; then
- update-inetd --group mail --add "pop3 stream tcp nowait
root /usr/sbin/tcpd /usr/sbin/ipop3d"
+ update-inetd $UPDATE_INETD_ARG "pop3${UPDATE_INETD_ARG_EXTRA}
/usr/sbin/ipop3d"
elif [ "$i" = "pop3s" ]; then
- update-inetd --group mail --add "pop3s stream tcp nowait
root /usr/sbin/tcpd /usr/sbin/ipop3d"
+ update-inetd $UPDATE_INETD_ARG "pop3s${UPDATE_INETD_ARG_EXTRA}
/usr/sbin/ipop3d"
fi
-done
+ done
+fi
cd /etc/ssl/certs
PATH=$PATH:/usr/bin/ssl
@@ -41,7 +68,7 @@
chown root.root /etc/ssl/certs/ipop3d.pem
chmod 0640 /etc/ssl/certs/ipop3d.pem
fi
-
+
#DEBHELPER#
exit 0
diff -u uw-imap-2002edebian1/debian/uw-imapd.postinst
uw-imap-2002edebian1/debian/uw-imapd.postinst
--- uw-imap-2002edebian1/debian/uw-imapd.postinst
+++ uw-imap-2002edebian1/debian/uw-imapd.postinst
@@ -2,20 +2,46 @@
set -e
+PROGRAM=uw-imapd
+
# Source debconf library.
. /usr/share/debconf/confmodule
db_version 2.0
-db_get uw-imapd/protocol
-for i in `echo "$RET" | sed 's/,/ /g'`; do
- if [ "$i" = "imap2" ]; then
- update-inetd --group mail --add "imap2 stream tcp nowait
root /usr/sbin/tcpd /usr/sbin/imapd";
- elif [ "$i" = "imap3" ]; then
- update-inetd --group mail --add "imap3 stream tcp nowait
root /usr/sbin/tcpd /usr/sbin/imapd";
- elif [ "$i" = "imaps" ]; then
- update-inetd --group mail --add "imaps stream tcp nowait
root /usr/sbin/tcpd /usr/sbin/imapd";
+if [ "$1" = "configure" ]; then
+ if [ -z "$2" ]; then
+ UPDATE_INETD_ARG='--group mail --add'
+ UPDATE_INETD_ARG_EXTRA=" stream tcp nowait root
/usr/sbin/tcpd /usr/sbin/imapd"
+ else
+ UPDATE_INETD_ARG='--enable'
+
+ # Bug#295306
+ if dpkg --compare-versions "$2" le 7:2002edebian1-6
+ then
+ MY_FILE=/var/cache/${PROGRAM}_inetd.conf_copy
+ if [ -r "$MY_FILE" ]; then
+ while read line; do
+ update-inetd --group mail --add "$line"
+ done < "$MY_FILE"
+ rm -f "$MY_FILE"
+ else
+ # The file has disappeared, or we're installing from
+ # 'config files' state. Install default entries.
+ UPDATE_INETD_ARG='--group mail --add'
+ UPDATE_INETD_ARG_EXTRA=" stream tcp nowait root
/usr/sbin/tcpd /usr/sbin/imapd"
+ fi
fi
-done
+ fi
+
+ db_get uw-imapd/protocol
+ for i in `echo "$RET" | sed 's/,/ /g'`; do
+ case "$i" in
+ imap2|imap3|imaps)
+ update-inetd $UPDATE_INETD_ARG "${i}${UPDATE_INETD_ARG_EXTRA}"
+ ;;
+ esac
+ done
+fi
cd /etc/ssl/certs
PATH=$PATH:/usr/bin/ssl
diff -u uw-imap-2002edebian1/debian/uw-imapd.postrm
uw-imap-2002edebian1/debian/uw-imapd.postrm
--- uw-imap-2002edebian1/debian/uw-imapd.postrm
+++ uw-imap-2002edebian1/debian/uw-imapd.postrm
@@ -10,15 +10,20 @@
## Remove imapd from inetd.conf
##
+if [ "$1" = "purge" ]; then
+ UPDATE_INETD_ARG='--remove'
+else
+ # Note that we disable in upgrades too
+ UPDATE_INETD_ARG='--disable'
+fi
+
db_get uw-imapd/protocol
for i in `echo "$RET" | sed 's/,/ /g'`; do
- if [ "$i" = "imap2" ]; then
- update-inetd --remove imap2;
- elif [ "$i" = "imap3" ]; then
- update-inetd --remove imap3;
- elif [ "$i" = "imaps" ]; then
- update-inetd --remove imaps;
- fi
+ case "$i" in
+ imap2|imap3|imaps)
+ update-inetd $UPDATE_INETD_ARG $i
+ ;;
+ esac
done
if [ "$1" = "purge" -a -f /etc/ssl/certs/imapd.pem ]; then
only in patch2:
unchanged:
--- uw-imap-2002edebian1.orig/debian/uw-imapd.preinst
+++ uw-imap-2002edebian1/debian/uw-imapd.preinst
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+PROGRAM=uw-imapd
+
+MY_FILE=/var/cache/${PROGRAM}_inetd.conf_copy
+
+if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" le 7:2002edebian1-6
+then
+ # See Bug#295306: the postrm that will be called after unpacking
+ # will remove entries from /etc/inetd.conf, so we save them for
+ # restoring them in the postinst.
+ grep -E "^([# ]+|#<off># +)?imap[23s]" /etc/inetd.conf >>"$MY_FILE"
+fi
+
only in patch2:
unchanged:
--- uw-imap-2002edebian1.orig/debian/ipopd.preinst
+++ uw-imap-2002edebian1/debian/ipopd.preinst
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+set -e
+
+PROGRAM=ipopd
+
+MY_FILE=/var/cache/${PROGRAM}_inetd.conf_copy
+
+if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" le 7:2002edebian1-6
+then
+ # See Bug#295306: the postrm that will be called after unpacking
+ # will remove entries from /etc/inetd.conf, so we save them for
+ # restoring them in the postinst.
+ grep -E "^([# ]+|#<off># +)?imap[23s]" /etc/inetd.conf >>"$MY_FILE"
+fi
+
signature.asc
Description: Digital signature

