Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package cyrus-imapd Hi all, cyrus-imapd has a RC bug (segfault, #927142). It has been fixed by upstream in version 3.0.9 with some additional memory leak issues. I backported these patchs and updated cyrus-common.postins. Full changes: * Bump Standards-Version to 4.3.0 * Add upstream/metadata * Fix sieve segfault (Closes: #927142) * Add upgradesieve() function to cyrus-common.postinst (related to #927142). Thanks to Anthony Prades * Add patch to support spaces in mailboxes * Add patches to fix some memory leaks found by code analyser (upstream) I also added myself to uploaders (package is RFA), since I need it here. I think I can take maintainance of it, at least during Buster life. cyrus-imapd has no reverse dependencies. Cheers, Xavier unblock cyrus-imapd/3.0.8-5 -- System Information: Debian Release: buster/sid APT prefers testing APT policy: (600, 'testing'), (50, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.14.0-3-amd64 (SMP w/2 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE= (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled
diff --git a/debian/changelog b/debian/changelog index e40d3aae2..689b61b69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,25 @@ +cyrus-imapd (3.0.8-5) unstable; urgency=medium + + [ Xavier Guimard ] + * Add upstream/metadata + + [ Anthony Prades ] + * sieve segfault (Closes: #927142) + + [ Xavier Guimard ] + * Fix Standards-Version to 4.3.0 + * Add patch headers + * Trailing whitespaces + * Add myself to uploaders + * Add upgradesieve() function to cyrus-common.postinst (related to #927142). + Thanks to Anthony Prades + * Fix postinst error + * Replace tabs + * Add patch to support spaces in mailboxes + * Add patches to fix some memory leaks found by code analyser (upstream) + + -- Xavier Guimard <y...@debian.org> Thu, 16 May 2019 11:42:29 +0200 + cyrus-imapd (3.0.8-4) unstable; urgency=medium [ Anthony Prades ] @@ -238,7 +260,7 @@ cyrus-imapd-2.4 (2.4.17+caldav~beta10-13) unstable; urgency=medium cyrus-imapd-2.4 (2.4.17+caldav~beta10-12) unstable; urgency=medium - * Add Breaks/Replaces for old cyrus-imapd-2.2 dummy packages + * Add Breaks/Replaces for old cyrus-imapd-2.2 dummy packages to cleanup old installations. * Install upstream changelogs to all real packages and Debian changelogs to all packages @@ -494,7 +516,7 @@ cyrus-imapd-2.4 (2.4.16-3) unstable; urgency=low cyrus-imapd-2.4 (2.4.16-2) unstable; urgency=low [ Gregor Herrman ] - * Add postinst scripts for all transitional packages to handle the + * Add postinst scripts for all transitional packages to handle the directory to symlink transition of their docdirs. (Closes: #690147) @@ -738,7 +760,7 @@ cyrus-imapd-2.4 (2.4.7-6) unstable; urgency=low cyrus-imapd-2.4 (2.4.7-5) unstable; urgency=low * Add support for starting cyrus-imapd-2.2 (Closes: #620839) - + -- Ondřej Surý <ond...@debian.org> Mon, 04 Apr 2011 23:57:45 +0200 cyrus-imapd-2.4 (2.4.7-4) unstable; urgency=low @@ -1021,7 +1043,7 @@ cyrus-imapd-2.2 (2.2.13-14) unstable; urgency=low * Auto-detect BDB version from whichever -dev package is installed at build time, rather than hardcoding in debian/control. * Tweak the init script to support epoch in PACKAGE_VERSION. - + -- Duncan Gibb <duncan.g...@siriusit.co.uk> Fri, 06 Feb 2009 15:41:07 +0000 cyrus-imapd-2.3 (2.3.8-2) UNRELEASED; urgency=low @@ -1135,7 +1157,7 @@ cyrus-imapd-2.2 (2.2.13-11) unstable; urgency=low cyrus-imapd-2.2 (2.2.13-10) unstable; urgency=high * High urgency due to #400747 - + [ Sven Mueller ] * Update README.Debian.simpleinstall (Closes: #395250) * Upstream change: applied RFC4314 READ-ONLY logic @@ -1143,7 +1165,7 @@ cyrus-imapd-2.2 (2.2.13-10) unstable; urgency=high [ Benjamin Seidenberg ] * Add notice about lmtp overquota configuration option rename to UPGRADE.Debian (Closes: #400645) - * Disable upstream patch 0019 due to bad sasl interactions (Closes: #400747) + * Disable upstream patch 0019 due to bad sasl interactions (Closes: #400747) -- Benjamin Seidenberg <benja...@debian.org> Sat, 9 Dec 2006 10:03:38 -0500 @@ -1185,7 +1207,7 @@ cyrus-imapd-2.2 (2.2.13-8) unstable; urgency=medium * Update date span in debian/copyright * Fix mistake in init script, ! check_status instead of !check_status. Thanks to Farzad FARID - * Fix DOS encoding on several files in debian/ (Closes: #391092) + * Fix DOS encoding on several files in debian/ (Closes: #391092) Thanks to Farzad FARID -- Sven Mueller <s...@debian.org> Mon, 9 Oct 2006 23:21:23 +0200 @@ -1226,7 +1248,7 @@ cyrus-imapd-2.2 (2.2.13-7) unstable; urgency=low cyrus-imapd-2.2 (2.2.13-6) unstable; urgency=low - * Fix a problem in cyrus-common-2.2 preinst + * Fix a problem in cyrus-common-2.2 preinst -- Sven Mueller <s...@debian.org> Thu, 10 Aug 2006 03:58:58 +0200 @@ -1328,7 +1350,7 @@ cyrus-imapd-2.2 (2.2.13-3) unstable; urgency=high cyrus-imapd-2.2 (2.2.13-2) unstable; urgency=low [ Sven Mueller ] - * Apply fix from upstream CVS to imap/backend.c (Closes: #365629) + * Apply fix from upstream CVS to imap/backend.c (Closes: #365629) -- Sven Mueller <deb...@incase.de> Tue, 2 May 2006 22:14:03 +0200 @@ -1491,7 +1513,7 @@ cyrus22-imapd (2.2.12-0.6) unstable; urgency=low [ Ondřej Surý ] * Add 64bit quota dpatch. - * Rerun autoconf and add result as dpatch. + * Rerun autoconf and add result as dpatch. -- Sven Mueller <deb...@incase.de> Fri, 23 Sep 2005 18:55:57 +0200 @@ -1526,7 +1548,7 @@ cyrus22-imapd (2.2.12-0.3) unstable; urgency=low * Add a README which contains the configure options used to compile the package. The README is auto-generated by debian/rules * cyrus22-clients needs to conflict with cyrus21-clients - * cyrus22-common needs to conflict with cyrus21-common + * cyrus22-common needs to conflict with cyrus21-common * Add a guess of what the problem might be to the set_cert_stuff failure message * Update a few Replaces:, Provides: and Conflicts: lines in debian/control @@ -1554,4 +1576,3 @@ cyrus22-imapd (2.2.12-0.1) unstable; urgency=low * Add syncldap2cyrus.pl script from #260833 (a cyrus21 bug) -- Sven Mueller <deb...@incase.de> Fri, 18 Mar 2005 13:34:09 +0100 - diff --git a/debian/control b/debian/control index 6b9a1a034..4e06904aa 100644 --- a/debian/control +++ b/debian/control @@ -4,8 +4,9 @@ Priority: optional Maintainer: Debian Cyrus Team <team+cy...@tracker.debian.org> Uploaders: Henrique de Moraes Holschuh <h...@debian.org>, Ondřej Surý <ond...@debian.org>, - Anthony Prades <toony.deb...@chezouam.net> -Standards-Version: 4.3.0.1 + Anthony Prades <toony.deb...@chezouam.net>, + Xavier Guimard <y...@debian.org> +Standards-Version: 4.3.0 Build-Depends: bison, comerr-dev, debhelper-compat (= 12), @@ -53,11 +54,11 @@ Pre-Depends: dpkg (>= 1.17.14~), Depends: adduser, db-upgrade-util, db-util, - e2fsprogs, + e2fsprogs, default-mta | mail-transport-agent, gawk, libsasl2-modules, - lsb-base, + lsb-base, netbase (>= 4.07), ${misc:Depends}, ${perl:Depends}, diff --git a/debian/cyrus-common.postinst b/debian/cyrus-common.postinst index ae63f920f..c2bcc1b33 100755 --- a/debian/cyrus-common.postinst +++ b/debian/cyrus-common.postinst @@ -45,6 +45,18 @@ getconf () { fi } +upgradesieve () { + if [ -z "$1" ] || $(dpkg --compare-versions $1 gt 3~); then + return + fi + + CYRUS_SIEVE_DIR="/var/spool/sieve" + getconf sievedir ${CYRUS_SIEVE_DIR} + CYRUS_SIEVE_DIR=$result + find ${CYRUS_SIEVE_DIR} -type d -regextype sed -regex '.*/[^/]\+^[^/]\+' -print | awk '{system("mv " $0 " " gensub("\\^", ".", "g", $1))}' + su cyrus -c '/usr/lib/cyrus/upgrade/masssievec /usr/lib/cyrus/bin/sievec' +} + case "$1" in configure) # Add the cyrus user (requires adduser >= 3.34) @@ -122,6 +134,8 @@ case "$1" in # Hopefully this will be handled by upstream next time cp -p /usr/lib/cyrus/cyrus-hardwired-config.txt \ /usr/lib/cyrus/cyrus-hardwired-config.active + + upgradesieve $2 ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/debian/patches/0020-lmtp-sieve-segfault.patch b/debian/patches/0020-lmtp-sieve-segfault.patch new file mode 100644 index 000000000..40f9f4571 --- /dev/null +++ b/debian/patches/0020-lmtp-sieve-segfault.patch @@ -0,0 +1,38 @@ +Description: Fix segfault on mailshare sive redirect +Author: Anthony Prades <https://github.com/toony> +Origin: upstream, https://github.com/cyrusimap/cyrus-imapd/commit/7a11575cadca55630a37f8c07298aae4b4cf2a4a +Bug: https://github.com/cyrusimap/cyrus-imapd/pull/2597 +Bug-Debian: https://bugs.debian.org/927142 +Forwarded: not-needed +Reviewed-By: Xavier Guimard <y...@debian.org> +Last-Update: 2019-05-09 + +--- a/imap/lmtp_sieve.c ++++ b/imap/lmtp_sieve.c +@@ -414,7 +414,7 @@ + /* if we have a msgid, we can track our redirects */ + if (m->id) { + snprintf(buf, sizeof(buf), "%s-%s", m->id, rc->addr); +- sievedb = make_sieve_db(mbname_userid(sd->mbname)); ++ sievedb = make_sieve_db(mbname_recipient(sd->mbname, ((deliver_data_t *) mc)->ns)); + + dkey.id = buf; + dkey.to = sievedb; +@@ -496,7 +496,7 @@ + body = msg_getheader(md, "original-recipient"); + origreceip = body ? body[0] : NULL; + if ((res = send_rejection(md->id, md->return_path, +- origreceip, mbname_userid(sd->mbname), ++ origreceip, mbname_recipient(sd->mbname, ((deliver_data_t *) mc)->ns), + rc->msg, md->data)) == 0) { + snmp_increment(SIEVE_REJECT, 1); + syslog(LOG_INFO, "sieve rejected: %s to: %s", +@@ -735,7 +735,7 @@ + while (waitpid(sm_pid, &sm_stat, 0) < 0); + + if (sm_stat == 0) { /* sendmail exit value */ +- sievedb = make_sieve_db(mbname_userid(sdata->mbname)); ++ sievedb = make_sieve_db(mbname_recipient(sdata->mbname, ((deliver_data_t *) mc)->ns)); + + dkey.id = outmsgid; + dkey.to = sievedb; diff --git a/debian/patches/0021-support-mailboxes-with-spaces.patch b/debian/patches/0021-support-mailboxes-with-spaces.patch new file mode 100644 index 000000000..3ec0ef1ab --- /dev/null +++ b/debian/patches/0021-support-mailboxes-with-spaces.patch @@ -0,0 +1,31 @@ +Description: cyradm: support mailboxes with spaces in getquotaroot +Author: Ellie Timoney <el...@fastmail.com> +Bug: https://github.com/cyrusimap/cyrus-imapd/issues/2521 +Forwarded: not-needed +Reviewed-By: Xavier Guimard <y...@debian.org> +Last-Update: 2019-05-16 + +--- a/perl/imap/IMAP/Admin.pm ++++ b/perl/imap/IMAP/Admin.pm +@@ -575,7 +575,11 @@ + $self->addcallback({-trigger => 'QUOTAROOT', + -callback => sub { + my %d = @_; +- return unless $d{-text} =~ /^\S+ (\S+)/; ++ return unless ( $d{-text} =~ /^\"[^\"]+\" \"([^\"]+)\"/ or ++ $d{-text} =~ /^\"[^\"]+\" (\S+)/ or ++ $d{-text} =~ /[^\"]\S+ \"([^\"]+)\"/ or ++ $d{-text} =~ /^[^\"]\S+ (\S+)/ ++ ); + ${$d{-rock}} = $1; + }, + -rock => \$qr}, +@@ -583,7 +586,7 @@ + -callback => sub { + my %d = @_; + return unless +- $d{-text} =~ s/^\S+ \((\S+) (\S+) (\S+)\)//; ++ $d{-text} =~ s/\((\S+) (\S+) (\S+)\)$//; + push @{$d{-rock}}, $1, [$2, $3]; + }, + -rock => \@info}); diff --git a/debian/patches/0022-close-backups-on-failure.patch b/debian/patches/0022-close-backups-on-failure.patch new file mode 100644 index 000000000..782b7ebed --- /dev/null +++ b/debian/patches/0022-close-backups-on-failure.patch @@ -0,0 +1,33 @@ +Description: close backups on failure + Static analizers report this as memory leak issue. +Author: Pavel Zhukov <https://github.com/landgraf> +Forwarded: https://github.com/cyrusimap/cyrus-imapd/commit/3c9060f9 +Reviewed-By: Xavier Guimard <y...@debian.org> +Last-Update: 2019-05-16 + +--- a/backup/ctl_backups.c ++++ b/backup/ctl_backups.c +@@ -898,6 +898,7 @@ + + if (r) { + printf("NO failed (%s)\n", error_message(r)); ++ r = backup_close(&backup); + return EC_SOFTWARE; // FIXME would something else be more appropriate? + } + +@@ -934,6 +935,7 @@ + fprintf(stderr, "unable to lock %s: %s\n", + userid ? userid : fname, + error_message(r)); ++ r = backup_close(&backup); + return EC_SOFTWARE; + } + +@@ -994,6 +996,7 @@ + fprintf(stderr, "unable to lock %s: %s\n", + userid ? userid : fname, + error_message(r)); ++ r = backup_close(&backup); + return EC_SOFTWARE; + } + diff --git a/debian/patches/0023-fix-memory-leak-on-ldap-failure.patch b/debian/patches/0023-fix-memory-leak-on-ldap-failure.patch new file mode 100644 index 000000000..4d0370b51 --- /dev/null +++ b/debian/patches/0023-fix-memory-leak-on-ldap-failure.patch @@ -0,0 +1,135 @@ +Description: fix little memory leak when LDAP fails +Author: Ellie Timoney <el...@fastmail.com> +Origin: upstream, https://github.com/cyrusimap/cyrus-imapd/commit/88ee843d +Forwarded: https://github.com/cyrusimap/cyrus-imapd/commit/88ee843d +Reviewed-By: Xavier Guimard <y...@debian.org> +Last-Update: 2019-05-16 + +--- a/ptclient/ldap.c ++++ b/ptclient/ldap.c +@@ -932,7 +932,7 @@ + { + rc = ptsmodule_expand_tokens(ptsm->filter, canon_id, NULL, &filter); + if (rc != PTSM_OK) +- return rc; ++ goto done; + + if (ptsm->domain_base_dn && ptsm->domain_base_dn[0] != '\0' && (strrchr(canon_id, '@') == NULL)) { + syslog(LOG_DEBUG, "collecting all domains from %s", ptsm->domain_base_dn); +@@ -948,15 +948,18 @@ + syslog(LOG_ERR, "LDAP not available: %s", ldap_err2string(rc)); + ldap_unbind(ptsm->ld); + ptsm->ld = NULL; +- return PTSM_RETRY; ++ rc = PTSM_RETRY; ++ goto done; + } + + syslog(LOG_ERR, "LDAP search for domain failed: %s", ldap_err2string(rc)); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } + if (ldap_count_entries(ptsm->ld, res) < 1) { + syslog(LOG_ERR, "No domain found"); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } else if (ldap_count_entries(ptsm->ld, res) >= 1) { + int count_matches = 0; + char *temp_base = NULL; +@@ -976,10 +979,12 @@ + + if (count_matches > 1) { + syslog(LOG_ERR, "LDAP search for %s failed because it matches multiple accounts.", canon_id); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } else if (count_matches == 0) { + syslog(LOG_ERR, "LDAP search for %s failed because it does not match any account in all domains.", canon_id); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } + + syslog(LOG_DEBUG, "we have found %s in %s", canon_id, base); +@@ -1006,19 +1011,23 @@ + ldap_unbind(ptsm->ld); + ptsm->ld = NULL; + syslog(LOG_ERR, "LDAP not available: %s", ldap_err2string(rc)); +- return PTSM_RETRY; ++ rc = PTSM_RETRY; ++ goto done; + } + + syslog(LOG_ERR, "LDAP search for domain failed: %s", ldap_err2string(rc)); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } + + if (ldap_count_entries(ptsm->ld, res) < 1) { + syslog(LOG_ERR, "No domain %s found", domain); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } else if (ldap_count_entries(ptsm->ld, res) > 1) { + syslog(LOG_ERR, "Multiple domains %s found", domain); +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } else { + if ((entry = ldap_first_entry(ptsm->ld, res)) != NULL) { + if ((vals = ldap_get_values(ptsm->ld, entry, ptsm->domain_result_attribute)) != NULL) { +@@ -1033,7 +1042,7 @@ + } + + if (rc != PTSM_OK) { +- return rc; ++ goto done; + } else { + base = xstrdup(ptsm->base); + syslog(LOG_DEBUG, "Continuing with ptsm->base: %s", ptsm->base); +@@ -1044,23 +1053,23 @@ + } else { + rc = ptsmodule_expand_tokens(ptsm->base, canon_id, NULL, &base); + if (rc != PTSM_OK) +- return rc; ++ goto done; + } + + rc = ldap_search_st(ptsm->ld, base, ptsm->scope, filter, attrs, 0, &(ptsm->timeout), &res); + + if (rc != LDAP_SUCCESS) { + syslog(LOG_DEBUG, "Searching %s with %s failed", base, base); +- free(filter); +- free(base); + + if (rc == LDAP_SERVER_DOWN) { + ldap_unbind(ptsm->ld); + ptsm->ld = NULL; +- return PTSM_RETRY; ++ rc = PTSM_RETRY; ++ goto done; + } + +- return PTSM_FAIL; ++ rc = PTSM_FAIL; ++ goto done; + } + + free(filter); +@@ -1086,6 +1095,13 @@ + } + + return (*ret ? PTSM_OK : PTSM_FAIL); ++ ++ done: ++ if (filter) ++ free(filter); ++ if (base) ++ free(base); ++ return rc; + } + + diff --git a/debian/patches/series b/debian/patches/series index 2015ece78..bbe08983c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -17,3 +17,7 @@ 0017-cert-update.patch 0018-backend.testc-reset-server-authenticated-state-between-connections.patch 0019-support-clamav-0.101.0.patch +0020-lmtp-sieve-segfault.patch +0021-support-mailboxes-with-spaces.patch +0022-close-backups-on-failure.patch +0023-fix-memory-leak-on-ldap-failure.patch diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 000000000..24e91a33b --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,7 @@ +--- +Archive: GitHub +Bug-Database: https://github.com/cyrusimap/cyrus-imapd/issues +Contact: https://github.com/cyrusimap/cyrus-imapd/issues +Name: cyrus-imapd +Repository: https://github.com/cyrusimap/cyrus-imapd.git +Repository-Browse: https://github.com/cyrusimap/cyrus-imapd