Per [1]:
The value of alignment shall be a power of two multiple of sizeof(void *).
[1] https://pubs.opengroup.org/onlinepubs/
9799919799/functions/posix_memalign.html
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/28059)
#if defined(_BSD_SOURCE) || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L)
int memalign_ret;
+ /* posix_memalign() requires alignment to be at least sizeof(void *) */
+ if (alignment < sizeof(void *))
+ alignment = sizeof(void *);
+
if ((memalign_ret = posix_memalign(&ret, alignment, num))) {
ret = NULL;
switch (memalign_ret) {