dovecot-2.2: lib-storage: Previous log prefix changing code star...

dovecot at dovecot.org dovecot at dovecot.org
Fri Feb 6 16:18:30 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/280246f95e74
changeset: 18224:280246f95e74
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Feb 06 18:17:10 2015 +0200
description:
lib-storage: Previous log prefix changing code started accessing freed memory.

diffstat:

 src/lib-storage/mail-storage-service.c |  6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diffs (37 lines):

diff -r 6be98d5d829a -r 280246f95e74 src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c	Fri Feb 06 17:06:36 2015 +0200
+++ b/src/lib-storage/mail-storage-service.c	Fri Feb 06 18:17:10 2015 +0200
@@ -1165,7 +1165,7 @@
 				struct mail_storage_service_user **user_r,
 				const char **error_r)
 {
-	const char *old_log_prefix = i_get_failure_prefix();
+	char *old_log_prefix = i_strdup(i_get_failure_prefix());
 	bool update_log_prefix;
 	int ret;
 
@@ -1192,6 +1192,7 @@
 	ret = mail_storage_service_lookup_real(ctx, input, update_log_prefix,
 					       user_r, error_r);
 	i_set_failure_prefix("%s", old_log_prefix);
+	i_free(old_log_prefix);
 	return ret;
 }
 
@@ -1294,7 +1295,7 @@
 			      struct mail_storage_service_user *user,
 			      struct mail_user **mail_user_r)
 {
-	const char *old_log_prefix = i_get_failure_prefix();
+	char *old_log_prefix = i_strdup(i_get_failure_prefix());
 	int ret;
 
 	mail_storage_service_set_log_prefix(ctx, user->user_set, user,
@@ -1303,6 +1304,7 @@
 	ret = mail_storage_service_next_real(ctx, user, mail_user_r);
 	if ((user->flags & MAIL_STORAGE_SERVICE_FLAG_NO_LOG_INIT) != 0)
 		i_set_failure_prefix("%s", old_log_prefix);
+	i_free(old_log_prefix);
 	return ret;
 }
 


More information about the dovecot-cvs mailing list