#921717 RFH: cyrus-imapd -- Cyrus mail system - IMAP support

Package:
wnpp
Source:
wnpp
Submitter:
Ondřej Surý
Date:
2025-11-29 16:43:00 UTC
Severity:
normal
#921717#5
Date:
2019-02-08 10:59:17 UTC
From:
To:
I request an adopter for the cyrus-imapd package due to the lack of
time on my and hmh's side.

The package description is:
 Cyrus is an IMAP server designed to handle massive quantities of mail,
 with a number of features not found in other IMAP implementations,
 including support for:
  - running the daemon without root privileges;
  - POP3 and NNTP in addition to plain IMAP;
  - CalDAV and CardDAV;
  - secure IMAP using SSL;
  - server-side filtering with Sieve;
  - mail users without login accounts;
  - simple mail quotas;
  - virtual domains;
  - IPv6.
 .
 This package contains the IMAP (Internet Mail Access Protocol) portion
 of the Cyrus IMAPd suite.
 .
 For more information, please see the cyrus-common package.
 Cyrus is an IMAP server designed to handle massive quantities of mail,
 with a number of features not found in other IMAP implementations,
 including support for:
  - running the daemon without root privileges;
  - POP3 and NNTP in addition to plain IMAP;
  - CalDAV and CardDAV;
  - secure IMAP using SSL;
  - server-side filtering with Sieve;
  - mail users without login accounts;
  - simple mail quotas;
  - virtual domains;
  - IPv6.
 .
 This package contains the IMAP (Internet Mail Access Protocol) portion
 of the Cyrus IMAPd suite.
 .
 For more information, please see the cyrus-common package.
-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEEw2Gx4wKVQ+vGJel9g3Kkd++uWcIFAlxdYQVfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEMz
NjFCMUUzMDI5NTQzRUJDNjI1RTk3RDgzNzJBNDc3RUZBRTU5QzIACgkQg3Kkd++u
WcI6bg/+Pv5UMLxFMwA3ZKBxmBmTvhv44smSqc/r6dKlbfsJjoLX90BWJNf1Kv48
772nTNSyMwsrgEaSvrTJs2Oh9Wq2o1HsfotM2FJuVF+BcOTd5j/raAg9ljRfPz7n
UujF6aW04dmR/rnG1yvqGWrdFNtqdaGgLfCpqdwnal/E4xsxHNkcjFNqptAekj6Z
30uARZPK+ceWzvFvo8ZeMudrrsD706SyDHT5Ry2+zE440P8e/UReUoTU77+iCoth
gKzPEeLwiXMFiQyiTceYJBmBhJYDU/VthknmK5kHynHAIwJ39jDm3+kPirtSlSUu
IFxp3fxcssk6TKouOyOErlQNUr7tP75uw5bdU8y40PI5GeMW9iZGTcx7RZZ69oQB
OD65Q+9ULMWmSby4uWqsoA3uRkF4q1aNhzFxbK7gFcVyGDYPc/DBPvtj9khabVzp
y50Ra2vtwFTQbBR1PCS3PJ6mFHLUwe6KC6/PRXH3FdrYv/RBp3aDS3Ys+aM5tYIG
iWUUYOkOLtTE5LFutnDg1TO+i2oJUGRftZtZqF57w/PDHR69roGww5m+athjyxM0
ThIAJetB4TjL6TzvEaNrbDTZV2IYH3cB2AnCgo4MazELwPc+SEQNRvaV8hSy/xEn
lsrgijGbSk8NhPInicFVueQzU8fjxtrrf3aXqx4pHT/rWjqNpCY=
=4qfj
-----END PGP SIGNATURE-----

#921717#10
Date:
2019-12-17 01:39:47 UTC
From:
To:
Hi,

I took over the maintenance of cyrus-imapd. However, I'd like some help
to maintain it.

Cheers,
Xavier

#921717#17
Date:
2020-01-10 19:32:10 UTC
From:
To:
Hi Xavier,

On Tue, 17 Dec 2019 02:39:47 +0100 Xavier <yadd@debian.org> wrote:
 > Control: retitle -1 RFH: cyrus-imapd -- Cyrus mail system - IMAP support
 >
 > Hi,
 >
 > I took over the maintenance of cyrus-imapd. However, I'd like some help
 > to maintain it.
 >
 > Cheers,
 > Xavier

I'd be interested in helping out. My production still runs on a very old
version of cyrus-imapd (from Kolab v2 times) and I will need to upgrade
it at the beginning of February.

I'll ping you then and let you know, if I can add some help to the
cyrus-imapd package maintenance effort.

Thanks+Greets,
Mike

#921717#22
Date:
2020-01-11 06:22:31 UTC
From:
To:
Le 10/01/2020 à 20:32, Mike Gabriel a écrit :

Welcome on board :-D

#921717#27
Date:
2020-05-11 21:56:48 UTC
From:
To:
https://buildd.debian.org/status/fetch.php?pkg=cyrus-imapd&arch=i386&ver=3.2.0-1&stamp=1588581560&raw=0
https://buildd.debian.org/status/fetch.php?pkg=cyrus-imapd&arch=arm64&ver=3.2.0-1&stamp=1588581432&raw=0

Hi,

Could someone help us here ? I forwarded this bug to upstream ([1]) but
didn't receive any response for now.

(Cc to RFH bug)

Cheers,
Xavier

[1]: https://github.com/cyrusimap/cyrus-imapd/issues/3040

#921717#32
Date:
2020-05-11 23:01:35 UTC
From:
To:
Hi Xavier!
doesn't seem to allow comparing va_list against NULL due to the way va_list
is implemented on a particular architecture.

You could maybe add an auxiliary boolean variable to control whether
"va_list args" is empty or not, i.e. something like this:

Index: cyrus-imapd-3.2.0/imap/httpd.c
===================================================================
--- cyrus-imapd-3.2.0.orig/imap/httpd.c
+++ cyrus-imapd-3.2.0/imap/httpd.c
@@ -2350,7 +2350,7 @@ EXPORTED void simple_hdr(struct transact
     simple_hdr(txn, "Access-Control-Expose-Headers", hdr)

 static void comma_list_body(struct buf *buf,
-                            const char *vals[], unsigned flags, va_list args)
+                            const char *vals[], unsigned flags, int has_args, va_list args)
 {
     const char *sep = "";
     int i;
@@ -2358,11 +2358,11 @@ static void comma_list_body(struct buf *
     for (i = 0; vals[i]; i++) {
         if (flags & (1 << i)) {
             buf_appendcstr(buf, sep);
-            if (args) buf_vprintf(buf, vals[i], args);
+            if (has_args) buf_vprintf(buf, vals[i], args);
             else buf_appendcstr(buf, vals[i]);
             sep = ", ";
         }
-        else if (args) {
+        else if (has_args) {
             /* discard any unused args */
             vsnprintf(NULL, 0, vals[i], args);
         }
@@ -2377,7 +2377,7 @@ EXPORTED void comma_list_hdr(struct tran

     va_start(args, flags);

-    comma_list_body(&buf, vals, flags, args);
+    comma_list_body(&buf, vals, flags, 1, args);

     va_end(args);

@@ -3077,17 +3077,17 @@ EXPORTED void response_header(long code,
     }
     if (code == HTTP_SWITCH_PROT || code == HTTP_UPGRADE) {
         buf_printf(logbuf, "%supgrade=", sep);
-        comma_list_body(logbuf, upgrd_tokens, txn->flags.upgrade, NULL);
+        comma_list_body(logbuf, upgrd_tokens, txn->flags.upgrade, 0, 0);
         sep = "; ";
     }
     if (txn->flags.te) {
         buf_printf(logbuf, "%stx-encoding=", sep);
-        comma_list_body(logbuf, te, txn->flags.te, NULL);
+        comma_list_body(logbuf, te, txn->flags.te, 0, 0);
         sep = "; ";
     }
     if (txn->resp_body.enc.proc) {
         buf_printf(logbuf, "%scnt-encoding=", sep);
-        comma_list_body(logbuf, ce, txn->resp_body.enc.type, NULL);
+        comma_list_body(logbuf, ce, txn->resp_body.enc.type, 0, 0);
         sep = "; ";
     }
     if (txn->location) {

Adrian

#921717#37
Date:
2020-05-11 23:04:06 UTC
From:
To:
The other architectures have testsuite failures which seem unrelated.

Adrian

#921717#42
Date:
2020-05-12 00:02:06 UTC
From:
To:
According to the standard va_list is a complete object type.  There is
therefore no guarantee it can be compared to NULL and it is only by
accident (implementation detail) that is possible to do so on some
architectures.

Cheers,
Michael.

#921717#47
Date:
2020-05-12 03:16:49 UTC
From:
To:
This is a classic 'porting to arm' issue which used to catch people
out regularly 15 years ago because it was something where you could do
technically incorrect things that worked fine on other
architectures. It's a very long time since I saw something hit this issue.

Thanks for the patch Adrian.

Wookey

#921717#52
Date:
2020-05-12 08:09:08 UTC
From:
To:
Le 12/05/2020 à 01:04, John Paul Adrian Glaubitz a écrit :
"noargs" variable to fix the problem.

Cheers,
Xavier

#921717#57
Date:
2020-05-12 08:34:26 UTC
From:
To:
Hi Xavier!

Glad it works and thanks for the additional modifications and for testing
it. It was actually a shot in the dark yesterday shortly before I went
to bed :-).

I'll have a look whether I can help with the testsuite failures as
well in the evening or tomorrow.

Adrian