diff options
Diffstat (limited to 'net-mail/dovecot/files')
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); |