From aedd63db39ec97c1affdf1f80899c3ddc3f92a5e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Sun, 12 Dec 2021 14:36:11 +0100 Subject: [PATCH] Up to 2.3.17.1. --- dovecot.spec | 10 +++--- upstream-fixes.patch | 75 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 upstream-fixes.patch diff --git a/dovecot.spec b/dovecot.spec index 7e55a27..01fa504 100644 --- a/dovecot.spec +++ b/dovecot.spec @@ -12,13 +12,13 @@ Summary: IMAP and POP3 server written with security primarily in mind Summary(pl.UTF-8): Serwer IMAP i POP3 pisany głównie z myślą o bezpieczeństwie Name: dovecot -Version: 2.3.17 -Release: 2 +Version: 2.3.17.1 +Release: 1 Epoch: 1 License: MIT (libraries), LGPL v2.1 (the rest) Group: Networking/Daemons Source0: http://dovecot.org/releases/2.3/%{name}-%{version}.tar.gz -# Source0-md5: b9e928ebba1e7a523ab5616025c9f245 +# Source0-md5: 9b67ec4f21e5ecfcfb32fd5f412b511b Source1: %{name}.pamd Source2: %{name}.init Source3: %{name}.sysconfig @@ -26,7 +26,7 @@ Source4: %{name}.tmpfiles Patch0: %{name}-config.patch Patch1: %{name}-rpath.patch Patch2: %{name}-shebang.patch - +Patch3: upstream-fixes.patch Patch4: openssl3.patch URL: http://dovecot.org/ BuildRequires: autoconf @@ -168,7 +168,7 @@ Pakiet programistyczny do tworzenia wtyczek dla Dovecota. %patch0 -p1 %patch1 -p1 %patch2 -p1 - +%patch3 -p1 %patch4 -p1 %{__sed} -i 's,/usr/lib/dovecot,%{_libdir}/dovecot,g' doc/example-config/*.conf doc/example-config/conf.d/*.conf diff --git a/upstream-fixes.patch b/upstream-fixes.patch new file mode 100644 index 0000000..e1c3a99 --- /dev/null +++ b/upstream-fixes.patch @@ -0,0 +1,75 @@ +From 98f709deac9381721b93d896c27576dbff1f711c Mon Sep 17 00:00:00 2001 +From: Stephan Bosch +Date: Fri, 12 Nov 2021 10:43:16 +0100 +Subject: [PATCH 1/2] lib-storage: mail-duplicate - Fix panic occurring when + user has no configured home directory. + +Panic was: + +Panic: file imem.c: line 65 (i_strconcat): assertion failed: (str1 != NULL) +--- + src/lib-storage/mail-duplicate.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/lib-storage/mail-duplicate.c b/src/lib-storage/mail-duplicate.c +index ff4fa5630b..407fe4aec9 100644 +--- a/src/lib-storage/mail-duplicate.c ++++ b/src/lib-storage/mail-duplicate.c +@@ -722,14 +722,17 @@ mail_duplicate_db_init(struct mail_user *user, const char *name) + + e_debug(db->event, "Initialize"); + ++ db->user = user; ++ + if (mail_user_get_home(user, &home) <= 0) { + e_error(db->event, "User %s doesn't have home dir set, " + "disabling duplicate database", user->username); ++ return db; + } + +- db->user = user; +- db->path = home == NULL ? NULL : +- i_strconcat(home, "/.dovecot.", name, NULL); ++ i_assert(home != NULL); ++ ++ db->path = i_strconcat(home, "/.dovecot.", name, NULL); + db->dotlock_set = default_mail_duplicate_dotlock_set; + + lock_dir = mail_user_get_volatile_dir(user); + +From d36d2c595a12378b597f1fc82cd7b47cbbadb2e1 Mon Sep 17 00:00:00 2001 +From: Stephan Bosch +Date: Fri, 12 Nov 2021 11:16:47 +0100 +Subject: [PATCH 2/2] lib-storage: mail-duplicate - Fix segfault occurring when + user has no configured home directory + +Occurred only when a duplicate DB transaction was created. +--- + src/lib-storage/mail-duplicate.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/src/lib-storage/mail-duplicate.c b/src/lib-storage/mail-duplicate.c +index 407fe4aec9..7a78caa7c7 100644 +--- a/src/lib-storage/mail-duplicate.c ++++ b/src/lib-storage/mail-duplicate.c +@@ -491,13 +491,15 @@ mail_duplicate_transaction_free(struct mail_duplicate_transaction **_trans) + i_assert(trans->db->transaction_count > 0); + trans->db->transaction_count--; + +- iter = hash_table_iterate_init(trans->hash); +- while (hash_table_iterate(iter, trans->hash, &d, &d)) +- mail_duplicate_unlock(trans, d); +- hash_table_iterate_deinit(&iter); ++ if (hash_table_is_created(trans->hash)) { ++ iter = hash_table_iterate_init(trans->hash); ++ while (hash_table_iterate(iter, trans->hash, &d, &d)) ++ mail_duplicate_unlock(trans, d); ++ hash_table_iterate_deinit(&iter); ++ hash_table_destroy(&trans->hash); ++ } + i_assert(trans->id_lock_count == 0); + +- hash_table_destroy(&trans->hash); + event_unref(&trans->event); + pool_unref(&trans->pool); + } -- 2.44.0