On Mon, Oct 26, 2026 at 15:30:20 +0100, Michal Privoznik wrote:
From: Michal Privoznik <mprivozn@redhat.com>
This is to make sure any future changes done to VIR_MULTIPLY_ADD_IS_OVERFLOW() macro don't break it.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- tests/utiltest.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+)
diff --git a/tests/utiltest.c b/tests/utiltest.c index 0bef502a84..3d3e1a17ec 100644 --- a/tests/utiltest.c +++ b/tests/utiltest.c @@ -423,6 +423,39 @@ testGetSubIDs(const void *data G_GNUC_UNUSED) }
+static int +testMultiplyAddIsOverflow(const void *data G_GNUC_UNUSED) +{ + unsigned long a = ULONG_MAX / 1024UL; + + if (VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX, a, 1024, 1023)) { + VIR_TEST_DEBUG("should not have failed (limit=%lu, value%lu, multiply=1024, add=1023).", + ULONG_MAX, a); + return -1; + } + + if (!VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX, a, 1024, 1024)) { + VIR_TEST_DEBUG("should have failed (limit=%lu, value=%lu, multiply=1024, add=1024).", + ULONG_MAX, a); + return -1; + } + + if (VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX - 1022, a, 1024, 1)) { + VIR_TEST_DEBUG("should have failed (limit=%lu, value=%lu, multiply=1024, add=1).",
"should not have failed ..."
+ ULONG_MAX - 1022, a); + return -1; + } + + if (!VIR_MULTIPLY_ADD_IS_OVERFLOW(ULONG_MAX - 1023, a, 1024, 1)) { + VIR_TEST_DEBUG("should have failed (limit=%lu, value=%lu, multiply=1024, add=1).", + ULONG_MAX - 1023, a); + return -1; + } + + return 0; +} + + static int mymain(void) { @@ -447,6 +480,7 @@ mymain(void) DO_TEST(KernelCmdlineNextParam); DO_TEST(KernelCmdlineMatchParam); DO_TEST(GetSubIDs); + DO_TEST(MultiplyAddIsOverflow);
return result == 0 ? EXIT_SUCCESS : EXIT_FAILURE; }
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>