[Bug 269688] memalign() produces division by zero if size is 0

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 19 Feb 2023 17:14:00 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269688

--- Comment #2 from Paul Floyd <pjfloyd@wanadoo.fr> ---
On other platforms the behaviour is:

macOS doesn't exist
Linux glibc

just calls malloc

https://elixir.bootlin.com/glibc/glibc-2.37.9000/source/malloc/malloc.c#L3510
  /* If we need less alignment than we give anyway, just relay to malloc.  */
  if (alignment <= MALLOC_ALIGNMENT)
    return __libc_malloc (bytes);

musl

just calls malloc

https://github.com/esmil/musl/blob/master/src/malloc/memalign.c

if (align <= 4*sizeof(size_t)) {
                if (!(mem = malloc(len)))
                        return NULL;
                return mem;
        }

illimos

sets EINVAL and returns NULL

https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/libc/port/gen/memalign.c

        /*
         * check for valid size and alignment parameters
         * MAX_ALIGN check prevents overflow in later calculation.
         */
        if (nbytes == 0 || _misaligned(align) || align == 0 ||
            align > MAX_ALIGN) {
                errno = EINVAL;
                return (NULL);
        }

-- 
You are receiving this mail because:
You are the assignee for the bug.