]> git.pld-linux.org Git - packages/dovecot.git/blob - upstream-fixes.patch
icu rebuild
[packages/dovecot.git] / upstream-fixes.patch
1 From 98f709deac9381721b93d896c27576dbff1f711c Mon Sep 17 00:00:00 2001
2 From: Stephan Bosch <stephan.bosch@open-xchange.com>
3 Date: Fri, 12 Nov 2021 10:43:16 +0100
4 Subject: [PATCH 1/2] lib-storage: mail-duplicate - Fix panic occurring when
5  user has no configured home directory.
6
7 Panic was:
8
9 Panic: file imem.c: line 65 (i_strconcat): assertion failed: (str1 != NULL)
10 ---
11  src/lib-storage/mail-duplicate.c | 9 ++++++---
12  1 file changed, 6 insertions(+), 3 deletions(-)
13
14 diff --git a/src/lib-storage/mail-duplicate.c b/src/lib-storage/mail-duplicate.c
15 index ff4fa5630b..407fe4aec9 100644
16 --- a/src/lib-storage/mail-duplicate.c
17 +++ b/src/lib-storage/mail-duplicate.c
18 @@ -722,14 +722,17 @@ mail_duplicate_db_init(struct mail_user *user, const char *name)
19  
20         e_debug(db->event, "Initialize");
21  
22 +       db->user = user;
23 +
24         if (mail_user_get_home(user, &home) <= 0) {
25                 e_error(db->event, "User %s doesn't have home dir set, "
26                         "disabling duplicate database", user->username);
27 +               return db;
28         }
29  
30 -       db->user = user;
31 -       db->path = home == NULL ? NULL :
32 -               i_strconcat(home, "/.dovecot.", name, NULL);
33 +       i_assert(home != NULL);
34 +
35 +       db->path = i_strconcat(home, "/.dovecot.", name, NULL);
36         db->dotlock_set = default_mail_duplicate_dotlock_set;
37  
38         lock_dir = mail_user_get_volatile_dir(user);
39
40 From d36d2c595a12378b597f1fc82cd7b47cbbadb2e1 Mon Sep 17 00:00:00 2001
41 From: Stephan Bosch <stephan.bosch@open-xchange.com>
42 Date: Fri, 12 Nov 2021 11:16:47 +0100
43 Subject: [PATCH 2/2] lib-storage: mail-duplicate - Fix segfault occurring when
44  user has no configured home directory
45
46 Occurred only when a duplicate DB transaction was created.
47 ---
48  src/lib-storage/mail-duplicate.c | 12 +++++++-----
49  1 file changed, 7 insertions(+), 5 deletions(-)
50
51 diff --git a/src/lib-storage/mail-duplicate.c b/src/lib-storage/mail-duplicate.c
52 index 407fe4aec9..7a78caa7c7 100644
53 --- a/src/lib-storage/mail-duplicate.c
54 +++ b/src/lib-storage/mail-duplicate.c
55 @@ -491,13 +491,15 @@ mail_duplicate_transaction_free(struct mail_duplicate_transaction **_trans)
56         i_assert(trans->db->transaction_count > 0);
57         trans->db->transaction_count--;
58  
59 -       iter = hash_table_iterate_init(trans->hash);
60 -       while (hash_table_iterate(iter, trans->hash, &d, &d))
61 -               mail_duplicate_unlock(trans, d);
62 -       hash_table_iterate_deinit(&iter);
63 +       if (hash_table_is_created(trans->hash)) {
64 +               iter = hash_table_iterate_init(trans->hash);
65 +               while (hash_table_iterate(iter, trans->hash, &d, &d))
66 +                       mail_duplicate_unlock(trans, d);
67 +               hash_table_iterate_deinit(&iter);
68 +               hash_table_destroy(&trans->hash);
69 +       }
70         i_assert(trans->id_lock_count == 0);
71  
72 -       hash_table_destroy(&trans->hash);
73         event_unref(&trans->event);
74         pool_unref(&trans->pool);
75  }
This page took 0.299908 seconds and 3 git commands to generate.