From: Aki Tuomi Date: Tue, 27 Jan 2026 17:02:30 +0000 (+0200) Subject: [PATCH] lib-test: Require both lengths in test_assert_memcmp() X-Git-Tag: archive/raspbian/1%2.4.1+dfsg1-6+rpi1+deb13u7^2~66 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0876d9f115c5bbb75e8146bbb8ebcea9ab9a055a;p=dovecot.git [PATCH] lib-test: Require both lengths in test_assert_memcmp() Gbp-Pq: Name 0001-lib-test-Require-both-lengths-in-test_assert_memcmp.patch --- diff --git a/src/lib-test/test-common.h b/src/lib-test/test-common.h index 9858536..ace6fd5 100644 --- a/src/lib-test/test-common.h +++ b/src/lib-test/test-common.h @@ -43,8 +43,8 @@ void test_begin(const char *name); /* Additional parameters are m1 (source) and m2 (destination) memory and len * in memcmp(). */ -#define test_assert_memcmp(m1, m2, len) STMT_START { \ - test_assert_memcmp_idx(m1, m2, len, LLONG_MIN); \ +#define test_assert_memcmp(m1, len1, m2, len2) STMT_START { \ + test_assert_memcmp_idx(m1, len1, m2, len2, LLONG_MIN); \ } STMT_END /* Same as test_assert_strcmp except that it takes an additional i as input. @@ -63,12 +63,14 @@ void test_begin(const char *name); * When i is greater than or equals 0 it is used to identify the barrage of * tests failed like in test_assert_idx. */ -#define test_assert_memcmp_idx(_m1, _m2, _len, i) STMT_START { \ +#define test_assert_memcmp_idx(_m1, _len1, _m2, _len2, i) STMT_START { \ const void *_temp_m1 = (_m1); \ const void *_temp_m2 = (_m2); \ - const size_t _temp_len = (_len); \ - if ((memcmp(_temp_m1,_temp_m2, _temp_len) != 0)) \ - test_assert_failed_memcmp_idx("memcmp(" #_m1 "," #_m2 "," #_len ")", \ + const size_t _temp_len = I_MIN((_len1), (_len2)); \ + if ((_len1) != (_len2)) \ + test_assert_failed_ucmp_intmax_idx(#_len1 " == " #_len2, __FILE__, __LINE__, _len1, _len2, "=", i); \ + if ((memcmp(_temp_m1, _temp_m2, _temp_len) != 0)) \ + test_assert_failed_memcmp_idx("memcmp(" #_m1 "," #_m2 "," #_len2 ")", \ __FILE__, __LINE__, _temp_m1, _temp_m2, _temp_len, i); \ } STMT_END