dovecot-2.1: lmtp: Fixed assert-crashing on 3rd client connection.

dovecot at dovecot.org dovecot at dovecot.org
Sat Jan 21 00:43:24 EET 2012


details:   http://hg.dovecot.org/dovecot-2.1/rev/e9f68fdf6967
changeset: 13978:e9f68fdf6967
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Jan 21 00:43:13 2012 +0200
description:
lmtp: Fixed assert-crashing on 3rd client connection.

diffstat:

 src/lmtp/client.c        |  12 ++++++------
 src/lmtp/lmtp-settings.c |   4 ++--
 src/lmtp/lmtp-settings.h |   4 ++--
 3 files changed, 10 insertions(+), 10 deletions(-)

diffs (58 lines):

diff -r d5ba2d63ed6d -r e9f68fdf6967 src/lmtp/client.c
--- a/src/lmtp/client.c	Sat Jan 21 00:27:52 2012 +0200
+++ b/src/lmtp/client.c	Sat Jan 21 00:43:13 2012 +0200
@@ -137,8 +137,9 @@
 {
 	struct mail_storage_service_input input;
 	const struct setting_parser_context *set_parser;
+	struct lmtp_settings *lmtp_set;
+	struct lda_settings *lda_set;
 	const char *error;
-	void **sets;
 
 	memset(&input, 0, sizeof(input));
 	input.module = input.service = "lmtp";
@@ -152,12 +153,11 @@
 					       &set_parser, &error) < 0)
 		i_fatal("%s", error);
 
-	sets = settings_parser_get_list(set_parser) + 1;
-	settings_var_expand(&lmtp_setting_parser_info, sets[2], client->pool,
+	lmtp_settings_dup(set_parser, client->pool, &lmtp_set, &lda_set);
+	settings_var_expand(&lmtp_setting_parser_info, lmtp_set, client->pool,
 		mail_storage_service_get_var_expand_table(storage_service, &input));
-
-	lmtp_settings_dup(set_parser, client->pool,
-			  &client->lmtp_set, &client->set);
+	client->lmtp_set = lmtp_set;
+	client->set = lda_set;
 }
 
 static void client_generate_session_id(struct client *client)
diff -r d5ba2d63ed6d -r e9f68fdf6967 src/lmtp/lmtp-settings.c
--- a/src/lmtp/lmtp-settings.c	Sat Jan 21 00:27:52 2012 +0200
+++ b/src/lmtp/lmtp-settings.c	Sat Jan 21 00:43:13 2012 +0200
@@ -90,8 +90,8 @@
 
 void lmtp_settings_dup(const struct setting_parser_context *set_parser,
 		       pool_t pool,
-		       const struct lmtp_settings **lmtp_set_r,
-		       const struct lda_settings **lda_set_r)
+		       struct lmtp_settings **lmtp_set_r,
+		       struct lda_settings **lda_set_r)
 {
 	void **sets;
 
diff -r d5ba2d63ed6d -r e9f68fdf6967 src/lmtp/lmtp-settings.h
--- a/src/lmtp/lmtp-settings.h	Sat Jan 21 00:27:52 2012 +0200
+++ b/src/lmtp/lmtp-settings.h	Sat Jan 21 00:43:13 2012 +0200
@@ -14,7 +14,7 @@
 
 void lmtp_settings_dup(const struct setting_parser_context *set_parser,
 		       pool_t pool,
-		       const struct lmtp_settings **lmtp_set_r,
-		       const struct lda_settings **lda_set_r);
+		       struct lmtp_settings **lmtp_set_r,
+		       struct lda_settings **lda_set_r);
 
 #endif


More information about the dovecot-cvs mailing list