dovecot-1.2-sieve: Prevent assertion failure due to currupt bina...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Wed Aug 11 15:29:41 EEST 2010


details:   http://hg.rename-it.nl/dovecot-1.2-sieve/rev/df0a62c936a0
changeset: 1268:df0a62c936a0
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Wed Aug 11 14:29:27 2010 +0200
description:
Prevent assertion failure due to currupt binary string representation (missing \0).

diffstat:

 src/lib-sieve/sieve-binary.c |  7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diffs (29 lines):

diff -r 92512f733520 -r df0a62c936a0 src/lib-sieve/sieve-binary.c
--- a/src/lib-sieve/sieve-binary.c	Tue Aug 03 18:34:24 2010 +0200
+++ b/src/lib-sieve/sieve-binary.c	Wed Aug 11 14:29:27 2010 +0200
@@ -1731,6 +1731,7 @@
 (struct sieve_binary *binary, sieve_size_t *address, string_t **str_r) 
 {
 	unsigned int strlen = 0;
+	const char *strdata;
   
 	if ( !sieve_binary_read_unsigned(binary, address, &strlen) ) 
 		return FALSE;
@@ -1738,13 +1739,15 @@
 	if ( strlen > ADDR_BYTES_LEFT(binary, address) ) 
 		return FALSE;
  
- 	if ( str_r != NULL )  
-		*str_r = t_str_new_const((const char *) ADDR_POINTER(binary, address), strlen);
+	strdata = (const char *) ADDR_POINTER(binary, address);
 	ADDR_JUMP(address, strlen);
 	
 	if ( ADDR_CODE_AT(binary, address) != 0 )
 		return FALSE;
 	
+ 	if ( str_r != NULL )  
+		*str_r = t_str_new_const(strdata, strlen);
+
 	ADDR_JUMP(address, 1);
   
 	return TRUE;


More information about the dovecot-cvs mailing list