Package: release.debian.org Severity: normal User: [email protected] Usertags: unblock
Please unblock package cyrus-imapd-2.4 This update fixes one remote crash, one more crash found in upstream git, missing permissions on clean install (due /etc/sieve -> /var/spool/sieve symlink) and one "cosmetic" fix which will really delete stale files in proc and state dirs instead of printing them. $ diffstat cyrus-imapd-2.4_2.4.16-3.debdiff changelog | 11 +++ cyrus-common.cyrus-imapd.init | 4 - cyrus-makedirs | 12 ++-- patches/fix_consistent_crash_fetching_message_parts.patch | 42 ++++++++++++++ patches/fix_crash_in_sync_client.patch | 14 ++++ patches/series | 2 6 files changed, 77 insertions(+), 8 deletions(-) Debdiff attached... Thank you. unblock cyrus-imapd-2.4/2.4.16-3 -- System Information: Debian Release: 7.0 APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-3-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash
diff -Nru cyrus-imapd-2.4-2.4.16/debian/changelog cyrus-imapd-2.4-2.4.16/debian/changelog --- cyrus-imapd-2.4-2.4.16/debian/changelog 2012-10-26 13:54:37.000000000 +0200 +++ cyrus-imapd-2.4-2.4.16/debian/changelog 2013-02-26 12:37:22.000000000 +0100 @@ -1,3 +1,14 @@ +cyrus-imapd-2.4 (2.4.16-3) unstable; urgency=low + + * Use find -H instead of plain find to fix the permissions inside the + sieve dir (Closes: #693507) + * Really clean (instead of printing) the stale lock and proc directories + (Closes: #629609) + * Pull fix for crashes when fetching message parts (Closes: #700801) + * Fix crash in sync client (found in upstream git) + + -- Ondřej Surý <[email protected]> Tue, 26 Feb 2013 12:37:09 +0100 + cyrus-imapd-2.4 (2.4.16-2) unstable; urgency=low [ Gregor Herrman ] diff -Nru cyrus-imapd-2.4-2.4.16/debian/cyrus-common.cyrus-imapd.init cyrus-imapd-2.4-2.4.16/debian/cyrus-common.cyrus-imapd.init --- cyrus-imapd-2.4-2.4.16/debian/cyrus-common.cyrus-imapd.init 2012-10-26 13:54:37.000000000 +0200 +++ cyrus-imapd-2.4-2.4.16/debian/cyrus-common.cyrus-imapd.init 2013-02-26 12:37:22.000000000 +0100 @@ -145,8 +145,8 @@ # 2 if daemon could not be started # Clean stale entries - find "$LOCK_DIR" -mindepth 1 -depth -size 0 # -delete - find "$PROC_DIR" -mindepth 1 -depth -name '[0-9]*' # -delete + find "$LOCK_DIR" -mindepth 1 -depth -size 0 -delete + find "$PROC_DIR" -mindepth 1 -depth -name '[0-9]*' -delete start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 diff -Nru cyrus-imapd-2.4-2.4.16/debian/cyrus-makedirs cyrus-imapd-2.4-2.4.16/debian/cyrus-makedirs --- cyrus-imapd-2.4-2.4.16/debian/cyrus-makedirs 2012-10-26 13:54:37.000000000 +0200 +++ cyrus-imapd-2.4-2.4.16/debian/cyrus-makedirs 2013-02-26 12:37:22.000000000 +0100 @@ -89,7 +89,7 @@ [ -d "$confdir/$i/$j" ] || mkdir "$confdir/$i/$j" done done -find "$confdir" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \; +find -H "$confdir" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \; # Now, create the spool partitions for i in $partitions ; do @@ -102,9 +102,9 @@ done } [ -d "$i/stage." ] || mkdir "$i/stage." - find "$i" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \; + find -H "$i" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \; # and kill any squatter indexes - [ $killsquat -ne 0 ] && find "$i" -name 'cyrus.squat' -type f -exec rm -f "{}" \; + [ $killsquat -ne 0 ] && find -H "$i" -name 'cyrus.squat' -type f -exec rm -f "{}" \; done # And the sieve directory structure @@ -115,7 +115,7 @@ [ -d "$sievedir/$j" ] || mkdir "$sievedir/$j" chmod 755 "$sievedir/$j" done - find "$sievedir" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \; + find -H "$sievedir" \( -not -user cyrus -or -not -group mail \) -execdir chown cyrus:mail '{}' \; } [ "x${CYRUSOPTFILESYS}" != "x1" ] && exit 0 @@ -133,11 +133,11 @@ case ${i} in ext2) echo "Setting attributes to +S for ${partsys%% *}..." - find "${partsys%% *}" -type d -exec chattr +S "{}" \; + find -H "${partsys%% *}" -type d -exec chattr +S "{}" \; ;; ext3) echo "Setting attributes to -S -j for ${partsys%% *}..." - find "${partsys%% *}" -type d -exec chattr -S -j "{}" \; + find -H "${partsys%% *}" -type d -exec chattr -S -j "{}" \; ;; esac partsys="${partsys#* }" diff -Nru cyrus-imapd-2.4-2.4.16/debian/patches/fix_consistent_crash_fetching_message_parts.patch cyrus-imapd-2.4-2.4.16/debian/patches/fix_consistent_crash_fetching_message_parts.patch --- cyrus-imapd-2.4-2.4.16/debian/patches/fix_consistent_crash_fetching_message_parts.patch 1970-01-01 01:00:00.000000000 +0100 +++ cyrus-imapd-2.4-2.4.16/debian/patches/fix_consistent_crash_fetching_message_parts.patch 2013-02-26 12:37:22.000000000 +0100 @@ -0,0 +1,42 @@ +--- a/lib/prot.c ++++ b/lib/prot.c +@@ -1277,6 +1277,9 @@ int prot_printf(struct protstream *s, co + prot_write(s, buf, strlen(buf)); + break; + ++ /* according to linux 'man 3 printf' this is supposed to be ++ * of type "ptrdiff_t", not "size_t" - but don't want to break ++ * running code! */ + case 't': { + size_t tu; + ssize_t td; +@@ -1310,6 +1313,29 @@ int prot_printf(struct protstream *s, co + (void)prot_putc(i, s); + break; + ++ case 'z': { ++ size_t zu; ++ ssize_t zd; ++ ++ switch (*++percent) { ++ case 'u': ++ zu = va_arg(pvar, size_t); ++ snprintf(buf, sizeof(buf), "%zu", zu); ++ prot_write(s, buf, strlen(buf)); ++ break; ++ ++ case 'd': ++ zd = va_arg(pvar, ssize_t); ++ snprintf(buf, sizeof(buf), "%zd", zd); ++ prot_write(s, buf, strlen(buf)); ++ break; ++ ++ default: ++ abort(); ++ } ++ break; ++ } ++ + default: + abort(); + } diff -Nru cyrus-imapd-2.4-2.4.16/debian/patches/fix_crash_in_sync_client.patch cyrus-imapd-2.4-2.4.16/debian/patches/fix_crash_in_sync_client.patch --- cyrus-imapd-2.4-2.4.16/debian/patches/fix_crash_in_sync_client.patch 1970-01-01 01:00:00.000000000 +0100 +++ cyrus-imapd-2.4-2.4.16/debian/patches/fix_crash_in_sync_client.patch 2013-02-26 12:37:22.000000000 +0100 @@ -0,0 +1,14 @@ +--- a/imap/sync_client.c ++++ b/imap/sync_client.c +@@ -1306,7 +1306,10 @@ static int update_mailbox_once(struct sy + r = mailbox_open_irl(local->name, &mailbox); + if (r == IMAP_MAILBOX_NONEXISTENT) { + /* been deleted in the meanwhile... */ +- r = folder_delete(remote->name); ++ if (remote) ++ r = folder_delete(remote->name); ++ else ++ r = 0; + goto done; + } + else if (r) diff -Nru cyrus-imapd-2.4-2.4.16/debian/patches/series cyrus-imapd-2.4-2.4.16/debian/patches/series --- cyrus-imapd-2.4-2.4.16/debian/patches/series 2012-10-26 13:54:37.000000000 +0200 +++ cyrus-imapd-2.4-2.4.16/debian/patches/series 2013-02-26 12:37:22.000000000 +0100 @@ -30,3 +30,5 @@ cyrus-imapd-2.4.2-903-normalize-authorization-id.patch 86-fix_PATH_MAX_on_hurd.patch 87-try_only_-ldb.patch +fix_consistent_crash_fetching_message_parts.patch +fix_crash_in_sync_client.patch

