On Mon, Oct 26, 2026 at 15:30:20 +0100, Michal Privoznik wrote:
> From: Michal Privoznik <[email protected]>
> 
> 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 <[email protected]>
> ---
>  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 <[email protected]>

Reply via email to