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