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