dovecot-2.0-pigeonhole: lib-sieve: Fixed code block read bounds ...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Thu Sep 26 23:26:57 EEST 2013
details: http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/5d60c933bc58
changeset: 1562:5d60c933bc58
user: Stephan Bosch <stephan at rename-it.nl>
date: Sun Sep 15 17:47:53 2013 +0200
description:
lib-sieve: Fixed code block read bounds checking.
diffstat:
src/lib-sieve/sieve-binary-code.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diffs (30 lines):
diff -r 27285d227485 -r 5d60c933bc58 src/lib-sieve/sieve-binary-code.c
--- a/src/lib-sieve/sieve-binary-code.c Sun Sep 15 12:19:10 2013 +0200
+++ b/src/lib-sieve/sieve-binary-code.c Sun Sep 15 17:47:53 2013 +0200
@@ -214,7 +214,7 @@
((const int8_t *) (&_code[*address]))
#define ADDR_BYTES_LEFT(address) \
- ((_code_size) - (*address))
+ ((*address) > _code_size ? 0 : ((_code_size) - (*address)))
#define ADDR_JUMP(address, offset) \
(*address) += offset
@@ -350,7 +350,7 @@
ADDR_CODE_READ(sblock);
- if ( ADDR_BYTES_LEFT(address) <= 0 )
+ if ( ADDR_BYTES_LEFT(address) == 0 )
return FALSE;
(*offset_r) = code = ADDR_DATA_AT(address);
@@ -382,7 +382,7 @@
if ( objs->count == 1 )
return objs->objects;
- if ( ADDR_BYTES_LEFT(address) <= 0 )
+ if ( ADDR_BYTES_LEFT(address) == 0 )
return NULL;
code = ADDR_DATA_AT(address);
More information about the dovecot-cvs
mailing list