dovecot-2.2: Avoid under/overflows in unsigned integer calculati...

dovecot at dovecot.org dovecot at dovecot.org
Sun Feb 24 11:58:58 EET 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/f74bf0521d69
changeset: 15909:f74bf0521d69
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Feb 24 11:58:46 2013 +0200
description:
Avoid under/overflows in unsigned integer calculations.

diffstat:

 src/lib/str-find.c                |  10 +++++-----
 src/lib/test-bsearch-insert-pos.c |   2 +-
 src/lib/time-util.c               |   2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diffs (58 lines):

diff -r 573682b34a76 -r f74bf0521d69 src/lib/str-find.c
--- a/src/lib/str-find.c	Sun Feb 24 11:55:07 2013 +0200
+++ b/src/lib/str-find.c	Sun Feb 24 11:58:46 2013 +0200
@@ -37,7 +37,7 @@
 
 	suffixes[len_1] = ctx->key_len;
 	g = len_1;
-	for (i = ctx->key_len - 2; i >= 0; i--) {
+	for (i = (int)ctx->key_len - 2; i >= 0; i--) {
 		if (i > g && (int)suffixes[i + len_1 - f] < i - g)
 			suffixes[i] = suffixes[i + len_1 - f];
 		else {
@@ -53,9 +53,8 @@
 
 static void init_goodtab(struct str_find_context *ctx)
 {
-	unsigned int len_1 = ctx->key_len - 1;
-	unsigned int j, *suffixes;
-	int i;
+	unsigned int *suffixes;
+	int j, i, len_1 = ctx->key_len - 1;
 
 	suffixes = t_buffer_get(sizeof(*suffixes) * ctx->key_len);
 	init_suffixes(ctx, suffixes);
@@ -153,7 +152,8 @@
 				i--;
 			}
 
-			bad_value = ctx->badtab[data[i + j]] + i + 1 - key_len;
+			bad_value = (int)(ctx->badtab[data[i + j]] + i + 1) -
+				(int)key_len;
 			j += I_MAX(ctx->goodtab[i], bad_value);
 		}
 		i_assert(j <= size);
diff -r 573682b34a76 -r f74bf0521d69 src/lib/test-bsearch-insert-pos.c
--- a/src/lib/test-bsearch-insert-pos.c	Sun Feb 24 11:55:07 2013 +0200
+++ b/src/lib/test-bsearch-insert-pos.c	Sun Feb 24 11:58:46 2013 +0200
@@ -5,7 +5,7 @@
 
 static int cmp_uint(const unsigned int *i1, const unsigned int *i2)
 {
-	return *i1 - *i2;
+	return (int)*i1 - (int)*i2;
 }
 
 void test_bsearch_insert_pos(void)
diff -r 573682b34a76 -r f74bf0521d69 src/lib/time-util.c
--- a/src/lib/time-util.c	Sun Feb 24 11:55:07 2013 +0200
+++ b/src/lib/time-util.c	Sun Feb 24 11:58:46 2013 +0200
@@ -37,7 +37,7 @@
 		secs--;
 		usecs += 1000000;
 	}
-	return ((long long)secs * 1000000ULL) + usecs;
+	return ((long long)secs * 1000000LL) + usecs;
 }
 
 const char *t_strflocaltime(const char *fmt, time_t t)


More information about the dovecot-cvs mailing list