Browse Source

dovecot: add new upstream fixes for 2.2.1

user/chris/wip/linux37
Christian Wiese 12 years ago committed by Christian Wiese
parent
commit
42f54d0c8a
  1. 250
      mail/dovecot/dovecot-2.2.1-0000-upstream-fixes.patch

250
mail/dovecot/dovecot-2.2.1-0000-upstream-fixes.patch

@ -1009,3 +1009,253 @@ index da07e9b..9560cc4 100644
--
1.7.10.2
From ebc36aca877984a309ee676da1f88d0d9a87e0c2 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <tss@iki.fi>
Date: Thu, 2 May 2013 16:20:02 +0300
Subject: [PATCH] example-config: Typofix
diff --git a/doc/example-config/dovecot.conf b/doc/example-config/dovecot.conf
index 16b0b0b..5697661 100644
--- a/doc/example-config/dovecot.conf
+++ b/doc/example-config/dovecot.conf
@@ -47,7 +47,7 @@
# these networks. Typically you'd specify your IMAP proxy servers here.
#login_trusted_networks =
-# Sepace separated list of login access check sockets (e.g. tcpwrap)
+# Space separated list of login access check sockets (e.g. tcpwrap)
#login_access_sockets =
# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do
--
1.7.10.2
From d47967d36496b7e75f3152f917b8e51ef88affd7 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <tss@iki.fi>
Date: Thu, 2 May 2013 18:11:56 +0300
Subject: [PATCH] imap: Fixed using literals for URLs in CATENATE.
diff --git a/src/imap/cmd-append.c b/src/imap/cmd-append.c
index 9153e52..b825692 100644
--- a/src/imap/cmd-append.c
+++ b/src/imap/cmd-append.c
@@ -349,6 +349,30 @@ static void cmd_append_finish_catenate(struct client_command_context *cmd)
}
}
+static bool catenate_args_can_stop(struct cmd_append_context *ctx,
+ const struct imap_arg *args)
+{
+ /* eat away literal_sizes from URLs */
+ while (args->type != IMAP_ARG_EOL) {
+ if (imap_arg_atom_equals(args, "TEXT"))
+ return TRUE;
+ if (!imap_arg_atom_equals(args, "URL")) {
+ /* error - handle it later */
+ return TRUE;
+ }
+ args++;
+ if (args->type == IMAP_ARG_LITERAL_SIZE ||
+ args->type == IMAP_ARG_LITERAL_SIZE_NONSYNC) {
+ if (args->type == IMAP_ARG_LITERAL_SIZE)
+ cmd_append_send_literal_continue(ctx->client);
+ imap_parser_read_last_literal(ctx->save_parser);
+ return FALSE;
+ }
+ args++;
+ }
+ return TRUE;
+}
+
static bool cmd_append_continue_catenate(struct client_command_context *cmd)
{
struct client *client = cmd->client;
@@ -368,10 +392,12 @@ static bool cmd_append_continue_catenate(struct client_command_context *cmd)
it's fine that this would need to fully fit into input buffer
(although clients attempting to DoS could simply insert an extra
{1+} between the URLs) */
- ret = imap_parser_read_args(ctx->save_parser, 0,
- IMAP_PARSE_FLAG_LITERAL_SIZE |
- IMAP_PARSE_FLAG_LITERAL8 |
- IMAP_PARSE_FLAG_INSIDE_LIST, &args);
+ do {
+ ret = imap_parser_read_args(ctx->save_parser, 0,
+ IMAP_PARSE_FLAG_LITERAL_SIZE |
+ IMAP_PARSE_FLAG_LITERAL8 |
+ IMAP_PARSE_FLAG_INSIDE_LIST, &args);
+ } while (ret > 0 && !catenate_args_can_stop(ctx, args));
if (ret == -1) {
msg = imap_parser_get_error(ctx->save_parser, &fatal);
if (fatal)
@@ -630,8 +656,11 @@ static bool cmd_append_finish_parsing(struct client_command_context *cmd)
return cmd_sync(cmd, sync_flags, imap_flags, str_c(msg));
}
-static bool cmd_append_args_can_stop(const struct imap_arg *args)
+static bool cmd_append_args_can_stop(struct cmd_append_context *ctx,
+ const struct imap_arg *args)
{
+ const struct imap_arg *cat_list;
+
if (args->type == IMAP_ARG_EOL)
return TRUE;
@@ -645,8 +674,8 @@ static bool cmd_append_args_can_stop(const struct imap_arg *args)
args->type == IMAP_ARG_LITERAL_SIZE_NONSYNC)
return TRUE;
if (imap_arg_atom_equals(args, "CATENATE") &&
- args[1].type == IMAP_ARG_LIST)
- return TRUE;
+ imap_arg_get_list(&args[1], &cat_list))
+ return catenate_args_can_stop(ctx, cat_list);
return FALSE;
}
@@ -680,7 +709,7 @@ static bool cmd_append_parse_new_msg(struct client_command_context *cmd)
ret = imap_parser_read_args(ctx->save_parser, arg_min_count++,
IMAP_PARSE_FLAG_LITERAL_SIZE |
IMAP_PARSE_FLAG_LITERAL8, &args);
- } while (ret > 0 && !cmd_append_args_can_stop(args));
+ } while (ret > 0 && !cmd_append_args_can_stop(ctx, args));
if (ret == -1) {
if (!ctx->failed) {
msg = imap_parser_get_error(ctx->save_parser, &fatal);
--
1.7.10.2
From a2a529c6dbe1fc2b4e71e456c7cd3fc53b18bee7 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <tss@iki.fi>
Date: Thu, 2 May 2013 18:18:26 +0300
Subject: [PATCH] imap: Don't allow empty CATENATE () list.
diff --git a/src/imap/cmd-append.c b/src/imap/cmd-append.c
index b825692..a7e2b31 100644
--- a/src/imap/cmd-append.c
+++ b/src/imap/cmd-append.c
@@ -586,6 +586,10 @@ cmd_append_handle_args(struct client_command_context *cmd,
if (cat_list == NULL) {
/* normal APPEND */
return 1;
+ } else if (cat_list->type == IMAP_ARG_EOL) {
+ /* zero parts */
+ client_send_command_error(cmd, "Empty CATENATE list.");
+ return -1;
} else if ((ret = cmd_append_catenate(cmd, cat_list, nonsync_r)) < 0) {
/* invalid parameters, abort immediately */
return -1;
@@ -734,6 +738,8 @@ static bool cmd_append_parse_new_msg(struct client_command_context *cmd)
ret = cmd_append_handle_args(cmd, args, &nonsync);
if (ret < 0) {
/* invalid parameters, abort immediately */
+ if (ctx->catenate)
+ client->input_skip_line = TRUE;
cmd_append_finish(ctx);
return TRUE;
}
--
1.7.10.2
From b422c981522d9adda053424a5b837b1c5f06a991 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <tss@iki.fi>
Date: Thu, 2 May 2013 18:29:50 +0300
Subject: [PATCH] imap-urlauth-worker: Fixed a crash (by removing unnecessary
code)
diff --git a/src/imap-urlauth/imap-urlauth-worker.c b/src/imap-urlauth/imap-urlauth-worker.c
index 6d94a8f..49a3d59 100644
--- a/src/imap-urlauth/imap-urlauth-worker.c
+++ b/src/imap-urlauth/imap-urlauth-worker.c
@@ -54,7 +54,7 @@ struct client {
struct io *io, *ctrl_io;
struct istream *input, *ctrl_input;
struct ostream *output, *ctrl_output;
- struct timeout *to_idle, *to_delay;
+ struct timeout *to_idle;
char *access_user;
ARRAY_TYPE(string) access_apps;
@@ -245,8 +245,6 @@ static void client_destroy(struct client *client)
io_remove(&client->ctrl_io);
if (client->to_idle != NULL)
timeout_remove(&client->to_idle);
- if (client->to_delay != NULL)
- timeout_remove(&client->to_delay);
if (client->input != NULL)
i_stream_destroy(&client->input);
@@ -605,7 +603,6 @@ client_handle_user_command(struct client *client, const char *cmd,
i_debug("User %s doesn't exist", input.username);
client_send_line(client, "NO");
- timeout_remove(&client->to_delay);
return 1;
}
@@ -669,7 +666,7 @@ static bool client_handle_input(struct client *client)
const char *line, *cmd, *error;
int ret;
- if (client->url != NULL || client->to_delay != NULL) {
+ if (client->url != NULL) {
/* we're still processing a URL. wait until it's
finished. */
io_remove(&client->io);
--
1.7.10.2
From c35d09cecd4de0fa69514814d26ead0cd8776972 Mon Sep 17 00:00:00 2001
From: Timo Sirainen <tss@iki.fi>
Date: Thu, 2 May 2013 18:32:47 +0300
Subject: [PATCH] lib-imap-urlauth: Don't try to access garbage memory on
error handling path.
diff --git a/src/lib-imap-urlauth/imap-urlauth.c b/src/lib-imap-urlauth/imap-urlauth.c
index 2a557a2..0019f0e 100644
--- a/src/lib-imap-urlauth/imap-urlauth.c
+++ b/src/lib-imap-urlauth/imap-urlauth.c
@@ -362,6 +362,7 @@ int imap_urlauth_fetch_parsed(struct imap_urlauth_context *uctx,
unsigned char mailbox_key[IMAP_URLAUTH_KEY_LEN];
int ret;
+ *mpurl_r = NULL;
*error_r = NULL;
*error_code_r = MAIL_ERROR_NONE;
--
1.7.10.2
From 769728fec2c3a87695f3c26e5fc3773cb5618a9f Mon Sep 17 00:00:00 2001
From: Timo Sirainen <tss@iki.fi>
Date: Fri, 3 May 2013 17:17:15 +0300
Subject: [PATCH] quota-status: Return 554 instead of 552 on quota failures.
This is because RFC 5321/2821 recommends that 552 is
treated the same as 452.
diff --git a/src/plugins/quota/quota-status.c b/src/plugins/quota/quota-status.c
index 23a0070..bfac5e7 100644
--- a/src/plugins/quota/quota-status.c
+++ b/src/plugins/quota/quota-status.c
@@ -107,7 +107,7 @@ static void client_handle_request(struct quota_client *client)
/* over quota */
value = mail_user_plugin_getenv(user, "quota_status_overquota");
if (value == NULL)
- value = t_strdup_printf("552 5.2.2 %s\n\n", error);
+ value = t_strdup_printf("554 5.2.2 %s\n\n", error);
}
mail_user_unref(&user);
mail_storage_service_user_free(&service_user);
--
1.7.10.2

Loading…
Cancel
Save