dovecot-1.2-sieve: lib-sieve: variables extension: fixed data st...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Mon Sep 16 02:14:25 EEST 2013
details: http://hg.rename-it.nl/dovecot-1.2-sieve/rev/d5188ad86a3d
changeset: 1294:d5188ad86a3d
user: Stephan Bosch <stephan at rename-it.nl>
date: Mon Sep 16 01:02:34 2013 +0200
description:
lib-sieve: variables extension: fixed data stack problem in 'set' command.
diffstat:
src/lib-sieve/plugins/variables/cmd-set.c | 64 +++++++++++++++---------------
1 files changed, 31 insertions(+), 33 deletions(-)
diffs (80 lines):
diff -r 885bb670a0f5 -r d5188ad86a3d src/lib-sieve/plugins/variables/cmd-set.c
--- a/src/lib-sieve/plugins/variables/cmd-set.c Sun Sep 15 17:51:59 2013 +0200
+++ b/src/lib-sieve/plugins/variables/cmd-set.c Mon Sep 16 01:02:34 2013 +0200
@@ -320,45 +320,43 @@
if ( str_len(value) > EXT_VARIABLES_MAX_VARIABLE_SIZE )
str_truncate(value, EXT_VARIABLES_MAX_VARIABLE_SIZE);
- T_BEGIN {
- /* Apply modifiers if necessary (sorted during code generation already) */
- if ( str_len(value) > 0 ) {
- for ( i = 0; i < mdfs; i++ ) {
- string_t *new_value;
- struct sieve_variables_modifier modf;
-
- if ( !ext_variables_opr_modifier_read(renv, address, &modf) ) {
+ /* Apply modifiers if necessary (sorted during code generation already) */
+ if ( str_len(value) > 0 ) {
+ for ( i = 0; i < mdfs; i++ ) {
+ string_t *new_value;
+ struct sieve_variables_modifier modf;
+
+ if ( !ext_variables_opr_modifier_read(renv, address, &modf) ) {
+ value = NULL;
+
+ sieve_runtime_trace_error(renv, "invalid modifier operand");
+ ret = SIEVE_EXEC_BIN_CORRUPT;
+ break;
+ }
+
+ if ( modf.def != NULL && modf.def->modify != NULL ) {
+ if ( !modf.def->modify(value, &new_value) ) {
value = NULL;
-
- sieve_runtime_trace_error(renv, "invalid modifier operand");
- ret = SIEVE_EXEC_BIN_CORRUPT;
+ ret = SIEVE_EXEC_FAILURE;
break;
}
-
- if ( modf.def != NULL && modf.def->modify != NULL ) {
- if ( !modf.def->modify(value, &new_value) ) {
- value = NULL;
- ret = SIEVE_EXEC_FAILURE;
- break;
- }
- value = new_value;
- if ( value == NULL )
- break;
+ value = new_value;
+ if ( value == NULL )
+ break;
- /* Hold value within limits */
- if ( str_len(value) > EXT_VARIABLES_MAX_VARIABLE_SIZE )
- str_truncate(value, EXT_VARIABLES_MAX_VARIABLE_SIZE);
- }
+ /* Hold value within limits */
+ if ( str_len(value) > EXT_VARIABLES_MAX_VARIABLE_SIZE )
+ str_truncate(value, EXT_VARIABLES_MAX_VARIABLE_SIZE);
}
- }
-
- /* Actually assign the value if all is well */
- if ( value != NULL ) {
- if ( !sieve_variable_assign(storage, var_index, value) )
- ret = SIEVE_EXEC_BIN_CORRUPT;
- }
- } T_END;
+ }
+ }
+
+ /* Actually assign the value if all is well */
+ if ( value != NULL ) {
+ if ( !sieve_variable_assign(storage, var_index, value) )
+ ret = SIEVE_EXEC_BIN_CORRUPT;
+ }
if ( ret <= 0 )
return ret;
More information about the dovecot-cvs
mailing list