dovecot-1.0: Logging: Make sure we don't recurse infinitely when...

dovecot at dovecot.org dovecot at dovecot.org
Sun Jul 20 17:58:26 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.0/rev/c311c66a2d1b
changeset: 5564:c311c66a2d1b
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Jul 20 17:58:22 2008 +0300
description:
Logging: Make sure we don't recurse infinitely when running out of memory.

diffstat:

1 file changed, 7 insertions(+)
src/lib/failures.c |    7 +++++++

diffs (26 lines):

diff -r f700b7b822f1 -r c311c66a2d1b src/lib/failures.c
--- a/src/lib/failures.c	Fri Jul 18 16:21:04 2008 +0300
+++ b/src/lib/failures.c	Sun Jul 20 17:58:22 2008 +0300
@@ -376,8 +376,14 @@ void i_set_failure_file(const char *path
 
 static int internal_handler(char log_type, const char *format, va_list args)
 {
+	static int recursed = 0;
 	string_t *str;
 	int ret;
+
+	if (recursed != 0)
+		return -1;
+
+	recursed++;
 
 	t_push();
 	str = t_str_new(512);
@@ -388,6 +394,7 @@ static int internal_handler(char log_typ
 	ret = write_full(2, str_data(str), str_len(str));
 	t_pop();
 
+	recursed--;
 	return ret;
 }
 


More information about the dovecot-cvs mailing list