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