]> dgit.raspbian.org Git - dovecot.git/commitdiff
[PATCH] lib-sieve: sieve-binary-code - Fix single byte oob stack buffer write in...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Fri, 10 Apr 2026 00:27:17 +0000 (02:27 +0200)
committerNoah Meyerhans <noahm@debian.org>
Wed, 16 Sep 2026 19:06:35 +0000 (15:06 -0400)
Gbp-Pq: Name 0001-lib-sieve-sieve-binary-code-Fix-single-byte-oob-stac.patch

pigeonhole/src/lib-sieve/sieve-binary-code.c
pigeonhole/tests/test-size.svtest

index 60bcfa109008cb83a37bf28a2e233baadca6ffc0..c1f4444f2f1f4905354d2f41c009c758b87f0b9e 100644 (file)
@@ -124,7 +124,7 @@ sieve_size_t sieve_binary_emit_integer(struct sieve_binary_block *sblock,
                                       sieve_number_t integer)
 {
        sieve_size_t address = _sieve_binary_block_get_size(sblock);
-       uint8_t buffer[sizeof(sieve_number_t) + 1];
+       uint8_t buffer[sizeof(sieve_number_t) * 8 / 7 + 1];
        int bufpos = sizeof(buffer) - 1;
 
        /* Encode last byte [0xxxxxxx]; msb == 0 marks the last byte */
index dd5cdc4f42e55abd98b645e5166a487033a6ec99..95517d1e8f659996e3fb99200cd9ec082a6ed33b 100644 (file)
@@ -72,3 +72,12 @@ test "Exact size" {
        }
 }
 
+/*
+ * TEST: Extreme size
+ */
+
+test "Extreme size" {
+       if size :over 18446744073709551615 {
+               test_fail "size :over matched extreme size";
+       }
+}