]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index, lib-compression: Fix explicit integer wrapping
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 11 May 2021 14:53:57 +0000 (16:53 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 11 May 2021 14:56:47 +0000 (16:56 +0200)
Using modulo instead of AND wrapped it one number too early.
Luckily these didn't break anything.

src/lib-compression/test-compression.c
src/lib-index/mail-cache-lookup.c
src/lib-index/mail-cache-purge.c

index a2234138885b86dfbe82fb0292945c06dcfa39b5..eee89fd3d230c40995fdb2863361cb7d46f0dff5 100644 (file)
@@ -326,7 +326,7 @@ test_compression_handler(const struct compression_handler *handler,
                if (i_rand_limit(3) == 0)
                        buf[i] = i_rand_limit(4);
                else
-                       buf[i] = i % UCHAR_MAX;
+                       buf[i] = i & UCHAR_MAX;
        }
        for (i = 0; i < 1024*128 / sizeof(buf); i++) {
                sha1_loop(&sha1, buf, sizeof(buf));
index cbac67431578ceb84170a9bfdf273321025e9e76..22511475df2455d3f85716f5b2b3e31e7104ddcf 100644 (file)
@@ -343,7 +343,7 @@ static int mail_cache_seq(struct mail_cache_view *view, uint32_t seq)
        struct mail_cache_iterate_field field;
        int ret;
 
-       view->cached_exists_value = (view->cached_exists_value + 1) % UINT8_MAX;
+       view->cached_exists_value = (view->cached_exists_value + 1) & UINT8_MAX;
        if (view->cached_exists_value == 0) {
                /* wrapped, we'll have to clear the buffer */
                buffer_set_used_size(view->cached_exists_buf, 0);
index 17cb6ca66b77d628d852dae14a548b0b12cd07cc..bc86bf18397bec14837928267c0751189e27b9b7 100644 (file)
@@ -293,7 +293,7 @@ mail_cache_copy(struct mail_cache *cache, struct mail_index_transaction *trans,
                ctx.new_msg = seq >= first_new_seq;
                buffer_set_used_size(ctx.buffer, 0);
 
-               ctx.field_seen_value = (ctx.field_seen_value + 1) % UINT8_MAX;
+               ctx.field_seen_value = (ctx.field_seen_value + 1) & UINT8_MAX;
                if (ctx.field_seen_value == 0) {
                        memset(buffer_get_modifiable_data(ctx.field_seen, NULL),
                               0, buffer_get_size(ctx.field_seen));