dovecot-2.0-pigeonhole: Fixed segfault occuring when loaded bina...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Wed Aug 11 18:25:54 EEST 2010


details:   http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/181e04d8ac6e
changeset: 1364:181e04d8ac6e
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Wed Aug 11 17:25:48 2010 +0200
description:
Fixed segfault occuring when loaded binary block turns out to be corrupt.

diffstat:

 src/lib-sieve/sieve-interpreter.c |  13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diffs (39 lines):

diff -r 90cec7ef7373 -r 181e04d8ac6e src/lib-sieve/sieve-interpreter.c
--- a/src/lib-sieve/sieve-interpreter.c	Wed Aug 11 16:55:11 2010 +0200
+++ b/src/lib-sieve/sieve-interpreter.c	Wed Aug 11 17:25:48 2010 +0200
@@ -174,6 +174,7 @@
 	
 	if ( !success ) {
 		sieve_interpreter_free(&interp);
+		interp = NULL;
 	} else {
 		interp->reset_vector = *address;
 	}
@@ -185,8 +186,11 @@
 (struct sieve_binary *sbin, const struct sieve_message_data *msgdata,
 	const struct sieve_script_env *senv, struct sieve_error_handler *ehandler) 
 {
-	struct sieve_binary_block *sblock =
-		sieve_binary_block_get(sbin, SBIN_SYSBLOCK_MAIN_PROGRAM);
+	struct sieve_binary_block *sblock;
+
+	if ( (sblock=sieve_binary_block_get(sbin, SBIN_SYSBLOCK_MAIN_PROGRAM)) 
+		== NULL )
+		return NULL;
 
  	return _sieve_interpreter_create(sbin, sblock, NULL, msgdata, senv, ehandler);
 }
@@ -196,10 +200,11 @@
 	const struct sieve_message_data *msgdata, const struct sieve_script_env *senv, 
 	struct sieve_error_handler *ehandler) 
 {
-	struct sieve_binary *sbin = sieve_binary_block_get_binary(sblock);
+	if ( sblock == NULL ) return NULL;
 
  	return _sieve_interpreter_create
-		(sbin, sblock, script, msgdata, senv, ehandler);
+		(sieve_binary_block_get_binary(sblock), sblock, script, msgdata, senv,
+			ehandler);
 }
 
 void sieve_interpreter_free(struct sieve_interpreter **interp) 


More information about the dovecot-cvs mailing list