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