I think that given that align is a non zero const we can trust it.

Le ven. 17 mai 2024, 15:56, Gao Xiang <hsiang...@linux.alibaba.com> a
écrit :

> The following EROFS patch will use this helper to handle overflow
> ALIGN_UP() cases.
>
> Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com>
> ---
>  include/grub/safemath.h | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/include/grub/safemath.h b/include/grub/safemath.h
> index fbd9b5925..baaea0ef4 100644
> --- a/include/grub/safemath.h
> +++ b/include/grub/safemath.h
> @@ -32,6 +32,22 @@
>
>  #define grub_cast(a, res)      grub_add ((a), 0, (res))
>
> +#define ALIGN_UP_OVF(v, align, res)                    \
> +({                                                     \
> +  bool __failed;                                       \
> +  typeof(v) a;                                         \
> +                                                       \
> +  __failed = grub_sub ((typeof(v))(align), 1, &a);     \
> +  if (__failed == false)                               \
> +    {                                                  \
> +    __failed = grub_add (v, a, res);                   \
> +    if (__failed == false)                             \
> +      {                                                        \
> +        *(res) &= ~a;                                  \
> +      }                                                        \
> +    }                                                  \
> +__failed;})
> +
>  #else
>  #error gcc 5.1 or newer or clang 8.0 or newer is required
>  #endif
> --
> 2.39.3
>
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to