]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: seq_range_array_*(): Fix seq2=2^32-1 handling
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 1 Dec 2016 00:26:08 +0000 (02:26 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Sat, 3 Dec 2016 16:45:02 +0000 (18:45 +0200)
Adding/merging it when it already existed added duplicated seq_range.

src/lib/seq-range-array.c
src/lib/test-seq-range-array.c

index 5f23204d2f7cc7fd5ffbffd36e70f7f89b3769e1..c29555adbc99a81f18c0462a843fcd3d1d77da0a 100644 (file)
@@ -163,7 +163,7 @@ seq_range_array_add_range_internal(ARRAY_TYPE(seq_range) *array,
                idx1--;
 
        if (idx1 == idx2 &&
-           (idx2 == count || data[idx2].seq1 > seq2+1) &&
+           (idx2 == count || (seq2 < (uint32_t)-1 && data[idx2].seq1 > seq2+1)) &&
            (idx1 == 0 || data[idx1-1].seq2 < seq1-1)) {
                /* no overlapping */
                value.seq1 = seq1;
index b66519c8a35ddce171551a47723d7847f1975b87..9ac890675e8721794435175a2173f9026b776392 100644 (file)
@@ -50,6 +50,11 @@ static void test_seq_range_array_add_merge(void)
        seq_range_array_add(&range, 1);
        seq_range_array_add(&range, 2);
        test_assert(array_count(&range) == 2);
+
+       seq_range_array_add_range(&range, 1, (uint32_t)-1);
+       test_assert(array_count(&range) == 1);
+       seq_range_array_add_range(&range, 1, (uint32_t)-1);
+       test_assert(array_count(&range) == 1);
        test_end();
 }