summaryrefslogtreecommitdiff
path: root/net-mail/dovecot/files
diff options
context:
space:
mode:
Diffstat (limited to 'net-mail/dovecot/files')
-rw-r--r--net-mail/dovecot/files/dovecot-2.3.11.3-apop-fix.patch60
-rw-r--r--net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-1.patch52
-rw-r--r--net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-2.patch27
-rw-r--r--net-mail/dovecot/files/dovecot-fix-search-crash.patch91
4 files changed, 79 insertions, 151 deletions
diff --git a/net-mail/dovecot/files/dovecot-2.3.11.3-apop-fix.patch b/net-mail/dovecot/files/dovecot-2.3.11.3-apop-fix.patch
deleted file mode 100644
index 667b4829f1c0..000000000000
--- a/net-mail/dovecot/files/dovecot-2.3.11.3-apop-fix.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From 3c5917d1abee8f4af43b5016ddb897154912eb8d Mon Sep 17 00:00:00 2001
-From: Aki Tuomi <aki.tu...@open-xchange.com>
-Date: Thu, 13 Aug 2020 19:13:49 +0300
-Subject: [PATCH 2/2] auth: test-mech - Fix type mismatch
-
----
- src/auth/test-mech.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/auth/test-mech.c b/src/auth/test-mech.c
-index 0a030a2be0..0a22ff46d0 100644
---- a/src/auth/test-mech.c
-+++ b/src/auth/test-mech.c
-@@ -192,7 +192,7 @@ static void test_mech_handle_challenge(struct auth_request *request,
- }
-
- static inline const unsigned char *
--test_mech_construct_apop_challenge(unsigned int connect_uid, unsigned long *len_r)
-+test_mech_construct_apop_challenge(unsigned int connect_uid, size_t *len_r)
- {
- string_t *apop_challenge = t_str_new(128);
-
-@@ -323,7 +323,7 @@ static void test_mechs(void)
- struct test_case *test_case = &tests[running_test];
- const struct mech_module *mech = test_case->mech;
- struct auth_request *request;
-- const char *testname = t_strdup_printf("auth mech %s %d/%lu",
-+ const char *testname = t_strdup_printf("auth mech %s %d/%zu",
- mech->mech_name,
- running_test+1,
- N_ELEMENTS(tests));
---
-2.11.0
-
-From 47ebfeef07d0908ba6b66344b0f630a21b81bcab Mon Sep 17 00:00:00 2001
-From: Aki Tuomi <aki.tu...@open-xchange.com>
-Date: Thu, 13 Aug 2020 19:13:04 +0300
-Subject: [PATCH 1/2] auth: test-mech - Fix APOP challenge format
-
----
- src/auth/test-mech.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/auth/test-mech.c b/src/auth/test-mech.c
-index cf05370035..0a030a2be0 100644
---- a/src/auth/test-mech.c
-+++ b/src/auth/test-mech.c
-@@ -196,8 +196,8 @@ test_mech_construct_apop_challenge(unsigned int connect_uid, unsigned long *len_
- {
- string_t *apop_challenge = t_str_new(128);
-
-- str_printfa(apop_challenge,"<%lx.%u.%"PRIdTIME_T"", (unsigned long) getpid(),
-- connect_uid, process_start_time+10);
-+ str_printfa(apop_challenge,"<%lx.%lx.%"PRIxTIME_T".", (unsigned long)getpid(),
-+ (unsigned long)connect_uid, process_start_time+10);
- str_append_data(apop_challenge, "\0testuser\0responseoflen16-", 26);
- *len_r = apop_challenge->used;
- return apop_challenge->data;
---
-2.11.0
diff --git a/net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-1.patch b/net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-1.patch
new file mode 100644
index 000000000000..204424c5ebb0
--- /dev/null
+++ b/net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-1.patch
@@ -0,0 +1,52 @@
+https://bugs.gentoo.org/764713
+https://github.com/dovecot/core/commit/2cc1feca9087651902a5ea3cda021c8a0b3217ce.patch
+
+From 2cc1feca9087651902a5ea3cda021c8a0b3217ce Mon Sep 17 00:00:00 2001
+From: Paul Howarth <paul@city-fan.org>
+Date: Mon, 4 Jan 2021 16:31:03 +0000
+Subject: [PATCH] lib: Fix timeval_cmp_margin for 32-bit systems
+
+The test suite compares times with seconds values of -INT_MAX and
+INT_MAX. The result of this comparison does not fit in a value of
+type int and so the test suite fails on 32-bit systems where time_t
+is an int. To fix this, calculations on seconds values are done
+using long long integers.
+
+Broken by 16ab5542
+---
+ src/lib/time-util.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/src/lib/time-util.c b/src/lib/time-util.c
+index 294bb02310..3f4cd01c9e 100644
+--- a/src/lib/time-util.c
++++ b/src/lib/time-util.c
+@@ -38,21 +38,23 @@ int timeval_cmp(const struct timeval *tv1, const struct timeval *tv2)
+ int timeval_cmp_margin(const struct timeval *tv1, const struct timeval *tv2,
+ unsigned int usec_margin)
+ {
+- long long usecs_diff;
++ long long secs_diff, usecs_diff;
+ int sec_margin, ret;
+
+ if (tv1->tv_sec < tv2->tv_sec) {
+ sec_margin = ((int)usec_margin / 1000000) + 1;
+- if ((tv2->tv_sec - tv1->tv_sec) > sec_margin)
++ secs_diff = (long long)tv2->tv_sec - (long long)tv1->tv_sec;
++ if (secs_diff > sec_margin)
+ return -1;
+- usecs_diff = (tv2->tv_sec - tv1->tv_sec) * 1000000LL +
++ usecs_diff = secs_diff * 1000000LL +
+ (tv2->tv_usec - tv1->tv_usec);
+ ret = -1;
+ } else if (tv1->tv_sec > tv2->tv_sec) {
+ sec_margin = ((int)usec_margin / 1000000) + 1;
+- if ((tv1->tv_sec - tv2->tv_sec) > sec_margin)
++ secs_diff = (long long)tv1->tv_sec - (long long)tv2->tv_sec;
++ if (secs_diff > sec_margin)
+ return 1;
+- usecs_diff = (tv1->tv_sec - tv2->tv_sec) * 1000000LL +
++ usecs_diff = secs_diff * 1000000LL +
+ (tv1->tv_usec - tv2->tv_usec);
+ ret = 1;
+ } else if (tv1->tv_usec < tv2->tv_usec) {
diff --git a/net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-2.patch b/net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-2.patch
new file mode 100644
index 000000000000..8956773b43ef
--- /dev/null
+++ b/net-mail/dovecot/files/dovecot-2.3.13-32-bit-tests-2.patch
@@ -0,0 +1,27 @@
+https://bugs.gentoo.org/764713
+https://github.com/dovecot/core/commit/01366bd18ea98bf6979328ff8580488920a33f0c
+
+From 01366bd18ea98bf6979328ff8580488920a33f0c Mon Sep 17 00:00:00 2001
+From: Aki Tuomi <aki.tuomi@open-xchange.com>
+Date: Thu, 4 Feb 2021 08:44:46 +0200
+Subject: [PATCH] lib: test-time-util - Use correct types for test case
+
+Fixes type mismatch on 32-bit systems.
+---
+ src/lib/test-time-util.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/test-time-util.c b/src/lib/test-time-util.c
+index cfa322048e..139db0ec5d 100644
+--- a/src/lib/test-time-util.c
++++ b/src/lib/test-time-util.c
+@@ -358,7 +358,8 @@ static void test_str_to_timeval(void)
+ {
+ struct {
+ const char *str;
+- unsigned int tv_sec, tv_usec;
++ time_t tv_sec;
++ suseconds_t tv_usec;
+ } tests[] = {
+ { "0", 0, 0 },
+ { "0.0", 0, 0 },
diff --git a/net-mail/dovecot/files/dovecot-fix-search-crash.patch b/net-mail/dovecot/files/dovecot-fix-search-crash.patch
deleted file mode 100644
index 860c070a433a..000000000000
--- a/net-mail/dovecot/files/dovecot-fix-search-crash.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-gentoo bug #756094
-
-From a668d767a710ca18ab6e7177d8e8be22a6b024fb Mon Sep 17 00:00:00 2001
-From: Timo Sirainen <timo.sirainen@open-xchange.com>
-Date: Mon, 31 Aug 2020 20:38:42 +0300
-Subject: [PATCH] lib-mail: message_parser_init_from_parts() - Fix crash if
- MIME boundaries don't end
-
-If the last "boundary--" doens't exist, the parsing assert-crashed at
-deinit. This mainly happened when searching mails.
-
-Fixes:
-Panic: file message-parser.c: line 175 (message_part_finish): assertion failed: (ctx->nested_parts_count > 0)
----
- src/lib-mail/message-parser.c | 13 ++++++++-----
- src/lib-mail/test-message-parser.c | 21 ++++++++++++++++++++-
- 2 files changed, 28 insertions(+), 6 deletions(-)
-
-diff --git a/src/lib-mail/message-parser.c b/src/lib-mail/message-parser.c
-index 011dea9050..8baf622e59 100644
---- a/src/lib-mail/message-parser.c
-+++ b/src/lib-mail/message-parser.c
-@@ -138,6 +138,7 @@ message_part_append(struct message_parser_ctx *ctx)
- struct message_part *parent = ctx->part;
- struct message_part *part;
-
-+ i_assert(!ctx->preparsed);
- i_assert(parent != NULL);
- i_assert((parent->flags & (MESSAGE_PART_FLAG_MULTIPART |
- MESSAGE_PART_FLAG_MESSAGE_RFC822)) != 0);
-@@ -171,12 +172,14 @@ static void message_part_finish(struct message_parser_ctx *ctx)
- {
- struct message_part **const *parent_next_partp;
-
-- i_assert(ctx->nested_parts_count > 0);
-- ctx->nested_parts_count--;
-+ if (!ctx->preparsed) {
-+ i_assert(ctx->nested_parts_count > 0);
-+ ctx->nested_parts_count--;
-
-- parent_next_partp = array_back(&ctx->next_part_stack);
-- array_pop_back(&ctx->next_part_stack);
-- ctx->next_part = *parent_next_partp;
-+ parent_next_partp = array_back(&ctx->next_part_stack);
-+ array_pop_back(&ctx->next_part_stack);
-+ ctx->next_part = *parent_next_partp;
-+ }
-
- message_size_add(&ctx->part->parent->body_size, &ctx->part->body_size);
- message_size_add(&ctx->part->parent->body_size, &ctx->part->header_size);
-diff --git a/src/lib-mail/test-message-parser.c b/src/lib-mail/test-message-parser.c
-index 13984f939e..a00f0d6200 100644
---- a/src/lib-mail/test-message-parser.c
-+++ b/src/lib-mail/test-message-parser.c
-@@ -178,9 +178,10 @@ static void test_message_parser_small_blocks(void)
- static void test_message_parser_stop_early(void)
- {
- struct message_parser_ctx *parser;
-- struct istream *input;
-+ struct istream *input, *input2;
- struct message_part *parts;
- struct message_block block;
-+ const char *error;
- unsigned int i;
- pool_t pool;
- int ret;
-@@ -198,6 +199,24 @@ static void test_message_parser_stop_early(void)
- &block)) > 0) ;
- test_assert(ret == 0);
- message_parser_deinit(&parser, &parts);
-+
-+ /* test preparsed - first re-parse everything with a stream
-+ that sees EOF at this position */
-+ input2 = i_stream_create_from_data(test_msg, i);
-+ parser = message_parser_init(pool, input2, &set_empty);
-+ while ((ret = message_parser_parse_next_block(parser,
-+ &block)) > 0) ;
-+ test_assert(ret == -1);
-+ message_parser_deinit(&parser, &parts);
-+
-+ /* now parse from the parts */
-+ i_stream_seek(input2, 0);
-+ parser = message_parser_init_from_parts(parts, input2, &set_empty);
-+ while ((ret = message_parser_parse_next_block(parser,
-+ &block)) > 0) ;
-+ test_assert(ret == -1);
-+ test_assert(message_parser_deinit_from_parts(&parser, &parts, &error) == 0);
-+ i_stream_unref(&input2);
- }
-
- i_stream_unref(&input);