Overview

Request 2586 (accepted)

Check in 2.5.13.30

Submit package Kolab:Winterfell / cyrus-imapd to package Kolab:16 / cyrus-imapd

cyrus-imapd.spec Changed
x
 
1
@@ -18,7 +18,7 @@
2
 %global _cyrusgroup mail
3
 %global _cyrexecdir %{_exec_prefix}/lib/%{name}
4
 
5
-%global tag_version 2.5.12.25
6
+%global tag_version 2.5.13.30
7
 ##%global revision    41
8
 ##%global git_hash    gd53406f3f
9
 
10
@@ -63,8 +63,7 @@
11
 ##
12
 ## Patches
13
 ##
14
-Patch0001:          0001-dlist-Use-int8_t-in-dlist_parsemap.patch
15
-Patch0002:          0002-Avoid-returning-1-as-255.patch
16
+Patch0003:          0003-Canonification-for-multiple-domains.patch
17
 
18
 BuildRoot:          %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
19
 
20
@@ -265,9 +264,8 @@
21
 sed -r -i -e 's/"berkeley(|-[a-z-]+)", //g' lib/imapoptions
22
 %endif
23
 
24
-%if %{_arch} == "ppc64le"
25
-%patch0001 -p1
26
-%patch0002 -p1
27
+%if 0%{?kolab_enterprise} < 1
28
+%patch0003 -p1
29
 %endif
30
 
31
 # only to update config.* files
32
@@ -757,6 +755,12 @@
33
 %{_libdir}/*.la
34
 
35
 %changelog
36
+* Mon Aug 19 2019 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 2.5.12.30-1
37
+- Rebase on to upstream 2.5.13
38
+
39
+* Tue Mar 12 2019 Timotheus Pokorra <tp@tbits.net> - 2.5.12.25-2
40
+- Backport patch from upstream for canonification for multiple domains
41
+
42
 * Wed Jan  2 2019 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 2.5.12.25-1
43
 - Rebase on to upstream 2.5.12
44
 
45
0001-dlist-Use-int8_t-in-dlist_parsemap.patch Deleted
37
 
1
@@ -1,35 +0,0 @@
2
-From 18077fc3c77ab9d62e8691d853e5516a7a765281 Mon Sep 17 00:00:00 2001
3
-From: "Jeroen van Meeuwen (Kolab Systems)" <vanmeeuwen@kolabsys.com>
4
-Date: Fri, 25 Aug 2017 15:17:27 +0200
5
-Subject: [PATCH 1/2] [dlist]: Use int8_t in dlist_parsemap()
6
-
7
-Resolves #2119
8
----
9
- imap/dlist.c | 4 ++--
10
- 1 file changed, 2 insertions(+), 2 deletions(-)
11
-
12
-diff --git a/imap/dlist.c b/imap/dlist.c
13
-index c93b85c..83ae73d 100644
14
---- a/imap/dlist.c
15
-+++ b/imap/dlist.c
16
-@@ -843,7 +843,7 @@ EXPORTED char dlist_parse(struct dlist **dlp, int parsekey, struct protstream *i
17
-     struct dlist *dl = NULL;
18
-     static struct buf kbuf;
19
-     static struct buf vbuf;
20
--    int c;
21
-+    int8_t c;
22
- 
23
-     /* handle the key if wanted */
24
-     if (parsekey) {
25
-@@ -957,7 +957,7 @@ EXPORTED int dlist_parsemap(struct dlist **dlp, int parsekey,
26
-          const char *base, unsigned len)
27
- {
28
-     struct protstream *stream;
29
--    char c;
30
-+    int8_t c;
31
-     struct dlist *dl = NULL;
32
- 
33
-     stream = prot_readmap(base, len);
34
--- 
35
-1.8.3.1
36
-
37
0002-Avoid-returning-1-as-255.patch Deleted
37
 
1
@@ -1,35 +0,0 @@
2
-From 11ca677bada174536fa1f7074892b1aa0f04091a Mon Sep 17 00:00:00 2001
3
-From: "Jeroen van Meeuwen (Kolab Systems)" <vanmeeuwen@kolabsys.com>
4
-Date: Fri, 25 Aug 2017 15:43:35 +0200
5
-Subject: [PATCH 2/2] Avoid returning -1 as 255
6
-
7
-Resolves #2122
8
----
9
- cunit/parse.testc | 4 ++--
10
- 1 file changed, 2 insertions(+), 2 deletions(-)
11
-
12
-diff --git a/cunit/parse.testc b/cunit/parse.testc
13
-index 281b249..dcaf920 100644
14
---- a/cunit/parse.testc
15
-+++ b/cunit/parse.testc
16
-@@ -23,7 +23,7 @@ int wrap_getint32(const char *s, int32_t *valp)
17
- {
18
-     struct protstream *prot;
19
-     char *b;
20
--    int c;
21
-+    int8_t c;
22
- 
23
-     b = xstrdup(s);   /* work around bug in prot_ungetc */
24
-     prot = prot_readmap(b, strlen(b));
25
-@@ -101,7 +101,7 @@ int wrap_getsint32(const char *s, int32_t *valp)
26
- {
27
-     struct protstream *prot;
28
-     char *b;
29
--    int c;
30
-+    int8_t c;
31
- 
32
-     b = xstrdup(s);   /* work around bug in prot_ungetc */
33
-     prot = prot_readmap(b, strlen(b));
34
--- 
35
-1.8.3.1
36
-
37
0003-Canonification-for-multiple-domains.patch Added
64
 
1
@@ -0,0 +1,62 @@
2
+--- a/ptclient/ldap.c  2019-01-02 14:44:17.000000000 +0100
3
++++ b/ptclient/ldap.c  2019-03-12 22:13:34.207770974 +0100
4
+@@ -933,7 +933,58 @@
5
+         if (rc != PTSM_OK)
6
+             return rc;
7
+ 
8
+-  if (ptsm->domain_base_dn && (strrchr(canon_id, '@') != NULL)) {
9
++        if (ptsm->domain_base_dn && ptsm->domain_base_dn[0] != '\0' && (strrchr(canon_id, '@') == NULL)) {
10
++            syslog(LOG_DEBUG, "collecting all domains from %s", ptsm->domain_base_dn);
11
++
12
++            snprintf(domain_filter, sizeof(domain_filter), ptsm->domain_filter, "*");
13
++
14
++            syslog(LOG_DEBUG, "Domain filter: %s", domain_filter);
15
++
16
++            rc = ldap_search_st(ptsm->ld, ptsm->domain_base_dn, ptsm->domain_scope, domain_filter, domain_attrs, 0, &(ptsm->timeout), &res);
17
++
18
++            if (rc != LDAP_SUCCESS) {
19
++                if (rc == LDAP_SERVER_DOWN) {
20
++                    syslog(LOG_ERR, "LDAP not available: %s", ldap_err2string(rc));
21
++                    ldap_unbind(ptsm->ld);
22
++                    ptsm->ld = NULL;
23
++                    return PTSM_RETRY;
24
++                }
25
++
26
++                syslog(LOG_ERR, "LDAP search for domain failed: %s", ldap_err2string(rc));
27
++                return PTSM_FAIL;
28
++            }
29
++            if (ldap_count_entries(ptsm->ld, res) < 1) {
30
++                syslog(LOG_ERR, "No domain found");
31
++                return PTSM_FAIL;
32
++            } else if (ldap_count_entries(ptsm->ld, res) >= 1) {
33
++                int count_matches = 0;
34
++                char *temp_base = NULL;
35
++                LDAPMessage *res2;
36
++                for (entry = ldap_first_entry(ptsm->ld, res); entry != NULL; entry = ldap_next_entry(ptsm->ld, entry)) {
37
++                    if ((vals = ldap_get_values(ptsm->ld, entry, ptsm->domain_name_attribute)) != NULL) {
38
++                        syslog(LOG_DEBUG, "we have a domain %s", vals[0]);
39
++                        ptsmodule_standard_root_dn(vals[0], (const char **) &temp_base);
40
++                        rc = ldap_search_st(ptsm->ld, temp_base, ptsm->scope, filter, attrs, 0, &(ptsm->timeout), &res2);
41
++                        if (rc == LDAP_SUCCESS && ldap_count_entries(ptsm->ld, res2) == 1) {
42
++                            syslog(LOG_DEBUG, "Found %s in %s", canon_id, temp_base);
43
++                            base = temp_base;
44
++                            count_matches++;
45
++                        }
46
++                    }
47
++                }
48
++
49
++                if (count_matches > 1) {
50
++                    syslog(LOG_ERR, "LDAP search for %s failed because it matches multiple accounts.", canon_id);
51
++                    return PTSM_FAIL;
52
++                } else if (count_matches == 0) {
53
++                    syslog(LOG_ERR, "LDAP search for %s failed because it does not match any account in all domains.", canon_id);
54
++                    return PTSM_FAIL;
55
++                }
56
++
57
++                syslog(LOG_DEBUG, "we have found %s in %s", canon_id, base);
58
++            }
59
++        }
60
++        else if (ptsm->domain_base_dn && ptsm->domain_base_dn[0] != '\0' && (strrchr(canon_id, '@') != NULL)) {
61
+       syslog(LOG_DEBUG, "Attempting to get domain for %s from %s", canon_id, ptsm->domain_base_dn);
62
+ 
63
+       /* Get the base dn to search from domain_base_dn searched on domain_scope with
64
cyrus-imapd-2.5.12.25.tar.gz/README -> cyrus-imapd-2.5.13.30.tar.gz/README Changed
10
 
1
@@ -28,7 +28,4 @@
2
   and if upgrading look at doc/install-upgrade.html as well.
3
 
4
 * To obtain updates to this software, visit the web page
5
-            http://www.cyrusimap.org/
6
-  or ftp directly from
7
-            ftp://ftp.cyrusimap.org/cyrus-imapd/
8
-
9
+            https://www.cyrusimap.org/
10
cyrus-imapd-2.5.12.25.tar.gz/cunit/parse.testc -> cyrus-imapd-2.5.13.30.tar.gz/cunit/parse.testc Changed
19
 
1
@@ -23,7 +23,7 @@
2
 {
3
     struct protstream *prot;
4
     char *b;
5
-    int c;
6
+    int8_t c;
7
 
8
     b = xstrdup(s);    /* work around bug in prot_ungetc */
9
     prot = prot_readmap(b, strlen(b));
10
@@ -101,7 +101,7 @@
11
 {
12
     struct protstream *prot;
13
     char *b;
14
-    int c;
15
+    int8_t c;
16
 
17
     b = xstrdup(s);    /* work around bug in prot_ungetc */
18
     prot = prot_readmap(b, strlen(b));
19
cyrus-imapd-2.5.12.25.tar.gz/cunit/quota.testc -> cyrus-imapd-2.5.13.30.tar.gz/cunit/quota.testc Changed
41
 
1
@@ -432,13 +432,13 @@
2
     quota_diff[QUOTA_STORAGE] = 10*1024;
3
     quota_diff[QUOTA_MESSAGE] = 2;
4
     quota_diff[QUOTA_ANNOTSTORAGE] = 1*1024;
5
-    r = quota_update_useds(NULL, quota_diff, 0);
6
+    r = quota_update_useds(NULL, quota_diff, NULL);
7
     CU_ASSERT_EQUAL(r, IMAP_QUOTAROOT_NONEXISTENT);
8
 
9
-    r = quota_update_useds("", quota_diff, 0);
10
+    r = quota_update_useds("", quota_diff, NULL);
11
     CU_ASSERT_EQUAL(r, IMAP_QUOTAROOT_NONEXISTENT);
12
 
13
-    r = quota_update_useds(QUOTAROOT_NONEXISTANT, quota_diff, 0);
14
+    r = quota_update_useds(QUOTAROOT_NONEXISTANT, quota_diff, NULL);
15
     CU_ASSERT_EQUAL(r, IMAP_QUOTAROOT_NONEXISTENT);
16
 
17
     /* set limits */
18
@@ -454,7 +454,7 @@
19
 #define TESTCASE(d0, d1, d2, e0, e1, e2) { \
20
     static const quota_t diff[QUOTA_NUMRESOURCES] = { d0, d1, d2 }; \
21
     static const quota_t expused[QUOTA_NUMRESOURCES] = { e0, e1, e2 }; \
22
-    r = quota_update_useds(QUOTAROOT, diff, 0); \
23
+    r = quota_update_useds(QUOTAROOT, diff, NULL); \
24
     CU_ASSERT_EQUAL(r, 0); \
25
     memset(&q2, 0, sizeof(q2)); \
26
     q2.root = QUOTAROOT; \
27
@@ -492,6 +492,13 @@
28
     TESTCASE(-50*1024, -10, -5*1024,
29
         0, 0, 0);
30
 
31
+    /* XXX we call quota_update_useds() with a NULL mailbox, which
32
+     * XXX will crash in some circumstances (see comment inline), but
33
+     * XXX our tests don't crash... which means we're missing tests
34
+     * XXX for the codepath that depends on mboxname!
35
+     * XXX https://github.com/cyrusimap/cyrus-imapd/issues/2808
36
+     */
37
+
38
 #undef TESTCASE
39
 }
40
 
41
cyrus-imapd-2.5.12.25.tar.gz/docsrc/conf.py -> cyrus-imapd-2.5.13.30.tar.gz/docsrc/conf.py Changed
46
 
1
@@ -71,9 +71,9 @@
2
 # built documents.
3
 #
4
 # The short X.Y version.
5
-version = '2.5.12'
6
+version = '2.5.13'
7
 # The full version, including alpha/beta/rc tags.
8
-release = '2.5.12'
9
+release = '2.5.13'
10
 
11
 # The language for content autogenerated by Sphinx. Refer to documentation
12
 # for a list of supported languages.
13
@@ -1063,13 +1063,13 @@
14
 #epub_use_index = True
15
 
16
 rst_prolog = """
17
-.. |imap_last_stable_version| replace:: 2.5.12
18
+.. |imap_last_stable_version| replace:: 2.5.13
19
 .. |imap_last_stable_branch| replace:: `cyrus-imapd-2.5`
20
-.. |imap_last_stable_next_version| replace:: 2.5.12 + patches
21
-.. |imap_current_stable_version| replace:: 3.0.8
22
-.. |imap_current_stable_next_version| replace:: 3.0.8 + patches
23
+.. |imap_last_stable_next_version| replace:: 2.5.13 + patches
24
+.. |imap_current_stable_version| replace:: 3.0.11
25
+.. |imap_current_stable_next_version| replace:: 3.0.11 + patches
26
 .. |imap_current_stable_branch| replace:: `cyrus-imapd-3.0`
27
-.. |imap_latest_development_version| replace:: 3.1.5
28
+.. |imap_latest_development_version| replace:: 3.1.7
29
 .. |imap_latest_development_branch| replace:: master
30
 .. |imap_tikanga_stock_version| replace:: 2.3.7
31
 .. |imap_santiago_stock_version| replace:: 2.3.16
32
@@ -1082,11 +1082,11 @@
33
 .. |sasl_current_stable_version| replace:: 2.1.27
34
 .. |imap_stable_release_notes| raw:: html
35
 
36
-    <a href="3.0/x/3.0.0.html">3.0.0</a>
37
+    <a href="3.0/x/3.0.11.html">3.0.11</a>
38
 
39
 .. |imap_development_release_notes| raw:: html
40
 
41
-    <a href="3.1/x/3.1.0.html">3.1.0</a>
42
+    <a href="3.1/x/3.1.7.html">3.1.7</a>
43
 
44
 """
45
 
46
cyrus-imapd-2.5.13.30.tar.gz/docsrc/imap/release-notes/2.5/x/2.5.13.rst Added
41
 
1
@@ -0,0 +1,39 @@
2
+:tocdepth: 3
3
+
4
+===============================
5
+Cyrus IMAP 2.5.13 Release Notes
6
+===============================
7
+
8
+.. IMPORTANT::
9
+
10
+    This is a bug-fix release in the `stable 2.5 series <http://www.cyrusimap.org/stable>`_.
11
+
12
+    Refer to the Cyrus IMAP 2.5.0 Release Notes for important information
13
+    about the 2.5 series, including upgrading instructions.
14
+
15
+Download via HTTPS:
16
+
17
+    * https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-2.5.13/cyrus-imapd-2.5.13.tar.gz
18
+    * https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-2.5.13/cyrus-imapd-2.5.13.tar.gz.sig
19
+
20
+.. _relnotes-2.5.13-changes:
21
+
22
+Changes Since 2.5.12
23
+====================
24
+
25
+Release changes
26
+---------------
27
+
28
+We’re trialing using the Github Releases feature. If you have trouble
29
+downloading this release, please report this to the mailing lists. Thanks!
30
+
31
+Security fixes
32
+--------------
33
+
34
+* Fixed CVE-2019-11356: buffer overrun in httpd
35
+
36
+Bug fixes
37
+---------
38
+
39
+* Fixed: ptloader, ptexpire and ptdump now honour the ``ptscache_db_path``
40
+  setting
41
cyrus-imapd-2.5.12.25.tar.gz/imap/cyr_virusscan.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/cyr_virusscan.c Changed
19
 
1
@@ -176,8 +176,17 @@
2
     int r;
3
 
4
     /* scan file */
5
+#ifdef CL_SCAN_STDOPT
6
     r = cl_scanfile(fname, virname, NULL, st->av_engine,
7
            CL_SCAN_STDOPT);
8
+#else
9
+    static struct cl_scan_options options;
10
+
11
+    memset(&options, 0, sizeof(struct cl_scan_options));
12
+    options.parse |= ~0; /* enable all parsers */
13
+
14
+    r = cl_scanfile(fname, virname, NULL, st->av_engine, &options);
15
+#endif
16
 
17
     switch (r) {
18
     case CL_CLEAN:
19
cyrus-imapd-2.5.12.25.tar.gz/imap/dlist.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/dlist.c Changed
19
 
1
@@ -845,7 +845,7 @@
2
     struct dlist *dl = NULL;
3
     static struct buf kbuf;
4
     static struct buf vbuf;
5
-    int c;
6
+    int8_t c;
7
 
8
     /* handle the key if wanted */
9
     if (parsekey) {
10
@@ -959,7 +959,7 @@
11
           const char *base, unsigned len)
12
 {
13
     struct protstream *stream;
14
-    char c;
15
+    int8_t c;
16
     struct dlist *dl = NULL;
17
 
18
     stream = prot_readmap(base, len);
19
cyrus-imapd-2.5.12.25.tar.gz/imap/http_caldav.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/http_caldav.c Changed
10
 
1
@@ -2602,7 +2602,7 @@
2
            /* Check if this is an empty property error */
3
            char propname[256];
4
            if (sscanf(errstr,
5
-                  "No value for %s property", propname) == 1) {
6
+                  "No value for %255s property", propname) == 1) {
7
            /* Empty LOCATION is OK */
8
            if (!strcasecmp(propname, "LOCATION")) continue;
9
            if (!strcasecmp(propname, "COMMENT")) continue;
10
cyrus-imapd-2.5.12.25.tar.gz/imap/httpd.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/httpd.c Changed
10
 
1
@@ -1529,7 +1529,7 @@
2
     memset(&tm, 0, sizeof(struct tm));
3
     tm.tm_isdst = -1;
4
     sscanf(time, "%02d:%02d:%02d", &tm.tm_hour, &tm.tm_min, &tm.tm_sec);
5
-    sscanf(date, "%s %2d %4d", month, &tm.tm_mday, &tm.tm_year);
6
+    sscanf(date, "%3s %2d %4d", month, &tm.tm_mday, &tm.tm_year);
7
     tm.tm_year -= 1900;
8
     for (tm.tm_mon = 0; tm.tm_mon < 12; tm.tm_mon++) {
9
    if (!strcmp(month, monthname[tm.tm_mon])) break;
10
cyrus-imapd-2.5.12.25.tar.gz/imap/imapd.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/imapd.c Changed
14
 
1
@@ -6686,12 +6686,9 @@
2
    /* special case: query top-level hierarchy separator */
3
    prot_printf(imapd_out, "* XLIST (\\Noselect) \"%c\" \"\"\r\n",
4
            imapd_namespace.hier_sep);
5
-    /*
6
     } else if (((listargs->sel & LIST_SEL_SUBSCRIBED) ||
7
        (listargs->ret & LIST_RET_SUBSCRIBED)) &&
8
           (backend_inbox || (backend_inbox = proxy_findinboxserver(imapd_userid)))) {
9
-    */
10
-    } else if (backend_inbox || (backend_inbox = proxy_findinboxserver(imapd_userid))) {
11
    /* remote inbox */
12
 
13
    /* XXX   If we are in a standard Murder, and are given
14
cyrus-imapd-2.5.12.25.tar.gz/imap/mbdump.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/mbdump.c Changed
10
 
1
@@ -1314,7 +1314,7 @@
2
        }
3
 
4
        if (changed) {
5
-       r = quota_update_useds(mailbox->quotaroot, quota_usage, 0);
6
+       r = quota_update_useds(mailbox->quotaroot, quota_usage, NULL);
7
        }
8
    }
9
 
10
cyrus-imapd-2.5.12.25.tar.gz/imap/quota_db.c -> cyrus-imapd-2.5.13.30.tar.gz/imap/quota_db.c Changed
12
 
1
@@ -471,6 +471,10 @@
2
    int res;
3
    int cmp = 1;
4
    if (q.scanmbox) {
5
+       /* XXX this will crash if mboxname was null...
6
+        * https://github.com/cyrusimap/cyrus-imapd/issues/2808
7
+        */
8
+
9
        cmp = cyrusdb_compar(qdb, mboxname, strlen(mboxname),
10
                 q.scanmbox, strlen(q.scanmbox));
11
    }
12
cyrus-imapd-2.5.12.25.tar.gz/ptclient/ptdump.c -> cyrus-imapd-2.5.13.30.tar.gz/ptclient/ptdump.c Changed
43
 
1
@@ -78,11 +78,11 @@
2
 int main(int argc, char *argv[])
3
 {
4
     struct db *ptdb;
5
-    char fnamebuf[1024];
6
     extern char *optarg;
7
     int opt;
8
     int r;
9
-    char *alt_config = NULL;
10
+    const char *fname;
11
+    char *alt_config = NULL, *tofree = NULL;
12
 
13
     while ((opt = getopt(argc, argv, "C:")) != EOF) {
14
    switch (opt) {
15
@@ -102,15 +102,21 @@
16
     cyrus_init(alt_config, "ptdump", 0, 0);
17
 
18
     /* open database */
19
-    strcpy(fnamebuf, config_dir);
20
-    strcat(fnamebuf, PTS_DBFIL);
21
-    r = cyrusdb_open(config_ptscache_db, fnamebuf, CYRUSDB_CREATE, &ptdb);
22
+    fname = config_getstring(IMAPOPT_PTSCACHE_DB_PATH);
23
+    if (!fname) {
24
+        tofree = strconcat(config_dir, PTS_DBFIL, NULL);
25
+        fname = tofree;
26
+    }
27
+
28
+    r = cyrusdb_open(config_ptscache_db, fname, CYRUSDB_CREATE, &ptdb);
29
     if(r != CYRUSDB_OK) {
30
-   fprintf(stderr,"error opening %s (%s)", fnamebuf,
31
-          cyrusdb_strerror(r));
32
-   exit(1);
33
+        fprintf(stderr,"error opening %s (%s)", fname,
34
+               cyrusdb_strerror(r));
35
+        exit(1);
36
     }
37
 
38
+    if (tofree) free(tofree);
39
+
40
     /* iterate through db, wiping expired entries */
41
     cyrusdb_foreach(ptdb, "", 0, NULL, dump_cb, ptdb, NULL);
42
 
43
cyrus-imapd-2.5.12.25.tar.gz/ptclient/ptexpire.c -> cyrus-imapd-2.5.13.30.tar.gz/ptclient/ptexpire.c Changed
41
 
1
@@ -103,11 +103,11 @@
2
 int main(int argc, char *argv[])
3
 {
4
     struct db *ptdb;
5
-    char fnamebuf[1024];
6
     extern char *optarg;
7
     int opt;
8
     int r;
9
-    char *alt_config = NULL;
10
+    const char *fname;
11
+    char *alt_config = NULL, *tofree = NULL;
12
 
13
     if ((geteuid()) == 0 && (become_cyrus(/*is_master*/0) != 0)) {
14
    fatal("must run as the Cyrus user", EC_USAGE);
15
@@ -143,15 +143,21 @@
16
     syslog(LOG_DEBUG, "%s", "ptexpire.c,v " _CYRUS_VERSION " " CYRUS_GITVERSION);
17
     
18
     /* open database */
19
-    strcpy(fnamebuf, config_dir);
20
-    strcat(fnamebuf, PTS_DBFIL);
21
-    r = cyrusdb_open(config_ptscache_db, fnamebuf, CYRUSDB_CREATE, &ptdb);
22
+    fname = config_getstring(IMAPOPT_PTSCACHE_DB_PATH);
23
+    if (!fname) {
24
+        tofree = strconcat(config_dir, PTS_DBFIL, NULL);
25
+        fname = tofree;
26
+    }
27
+
28
+    r = cyrusdb_open(config_ptscache_db, fname, CYRUSDB_CREATE, &ptdb);
29
     if(r != CYRUSDB_OK) {
30
-   syslog(LOG_ERR, "error opening %s (%s)", fnamebuf,
31
+        syslog(LOG_ERR, "error opening %s (%s)", fname,
32
           cyrusdb_strerror(r));
33
    exit(1);
34
     }
35
 
36
+    if (tofree) free(tofree);
37
+
38
     /* iterate through db, wiping expired entries */
39
     cyrusdb_foreach(ptdb, "", 0, expire_p, expire_cb, ptdb, NULL);
40
 
41
cyrus-imapd-2.5.12.25.tar.gz/ptclient/ptloader.c -> cyrus-imapd-2.5.13.30.tar.gz/ptclient/ptloader.c Changed
48
 
1
@@ -120,9 +120,6 @@
2
 /* config.c info (libimap) */
3
 const int config_need_data = 0;
4
 
5
-/* Globals */
6
-#define DB (config_ptscache_db)
7
-
8
 static char ptclient_debug = 0;
9
 struct db *ptsdb = NULL;
10
   
11
@@ -130,8 +127,9 @@
12
 {
13
     int r;
14
     int opt;
15
-    char fnamebuf[1024];
16
     extern char *optarg;
17
+    const char *fname;
18
+    char *tofree = NULL;
19
 
20
     if (geteuid() == 0) fatal("must run as the Cyrus user", EC_USAGE);
21
     setproctitle_init(argc, argv, envp);
22
@@ -156,15 +154,21 @@
23
    }
24
     }
25
 
26
-    strcpy(fnamebuf, config_dir);
27
-    strcat(fnamebuf, PTS_DBFIL);
28
-    r = cyrusdb_open(DB, fnamebuf, CYRUSDB_CREATE, &ptsdb);
29
+    fname = config_getstring(IMAPOPT_PTSCACHE_DB_PATH);
30
+    if (!fname) {
31
+        tofree = strconcat(config_dir, PTS_DBFIL, NULL);
32
+        fname = tofree;
33
+    }
34
+
35
+    r = cyrusdb_open(config_ptscache_db, fname, CYRUSDB_CREATE, &ptsdb);
36
     if (r != 0) {
37
-   syslog(LOG_ERR, "DBERROR: opening %s: %s", fnamebuf,
38
+        syslog(LOG_ERR, "DBERROR: opening %s: %s", fname,
39
           cyrusdb_strerror(ret));
40
    fatal("can't read pts database", EC_TEMPFAIL);
41
     }
42
 
43
+    if (tofree) free(tofree);
44
+
45
     ptsmodule_init();
46
 
47
     return 0;
48
cyrus-imapd.dsc Changed
20
 
1
@@ -2,9 +2,9 @@
2
 Source: cyrus-imapd
3
 Binary: cyrus-imapd
4
 Architecture: any
5
-Version: 2.5.12.25-0~kolab1
6
+Version: 2.5.12.30-0~kolab1
7
 Maintainer: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>
8
-Uploaders: Paul Klos <kolab@klos2day.nl>
9
+Uploaders: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>
10
 Homepage: http://www.cyrusimap.org/
11
 Standards-Version: 3.9.1
12
 Vcs-Browser: http://git.kolabsys.com/apt/cyrus-imapd/
13
@@ -43,5 +43,5 @@
14
 Package-List:
15
  cyrus-imapd deb mail extra
16
 Files:
17
- 00000000000000000000000000000000 0 cyrus-imapd-2.5.12.25.tar.gz
18
+ 00000000000000000000000000000000 0 cyrus-imapd-2.5.13.30.tar.gz
19
  00000000000000000000000000000000 0 debian.tar.gz
20
debian.changelog Changed
11
 
1
@@ -1,3 +1,9 @@
2
+cyrus-imapd (2.5.13.30-0~kolab1) unstable; urgency=low
3
+
4
+  * Rebase on to upstream 2.5.13
5
+
6
+ -- Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com>  Mon, 19 Aug 2019 11:30:13 +0100
7
+
8
 cyrus-imapd (2.5.12.25-0~kolab1) unstable; urgency=low
9
 
10
   * Rebase on to upstream 2.5.12
11
Refresh
cyrus-imapd
Refresh


Request History
Jeroen van Meeuwen's avatar

vanmeeuwen created request over 5 years ago

Check in 2.5.13.30


Jeroen van Meeuwen's avatar

vanmeeuwen accepted review over 5 years ago

Accept


Jeroen van Meeuwen's avatar

vanmeeuwen accepted review over 5 years ago

Accept


Jeroen van Meeuwen's avatar

vanmeeuwen approved review over 5 years ago

Accept


Jeroen van Meeuwen's avatar

vanmeeuwen accepted request over 5 years ago

Accept