This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v6] Add reallocarray function.
- From: Dennis Wölfing <denniswoelfing at gmx dot de>
- To: libc-alpha at sourceware dot org
- Cc: zackw at panix dot com
- Date: Mon, 29 May 2017 14:28:58 +0200
- Subject: Re: [PATCH v6] Add reallocarray function.
- Authentication-results: sourceware.org; auth=none
- References: <CAKCAbMj46tfbXaVitKisjf_27=N4qwnkuV08a-qMfpzo45Qgxg@mail.gmail.com> <20170522202515.19374-1-denniswoelfing@gmx.de>
On 22.05.2017 22:25, Dennis Wölfing wrote:
> The reallocarray function is an extension from OpenBSD. It is an
> integer-overflow-safe replacement for realloc(p, X*Y) and
> malloc(X*Y) (realloc(NULL, X*Y)). It can therefore help in preventing
> certain security issues in code.
>
> This is an updated version of a patch originally submitted by Rüdiger
> Sonderfeld in May 2014.
> See <https://sourceware.org/ml/libc-alpha/2014-05/msg00481.html>.
>
> Tested on i686 and x86_64.
>
> 2017-05-22 Dennis Wölfing <denniswoelfing@gmx.de>
> Rüdiger Sonderfeld <ruediger@c-plusplus.de>
>
> * include/stdlib.h (__libc_reallocarray): New declaration.
> * malloc/Makefile (routines): Add reallocarray.
> (tests): Add tst-reallocarray.c.
> * malloc/Versions: Add reallocarray and __libc_reallocarray.
> * malloc/malloc-internal.h (check_mul_overflow_size_t): New inline
> function.
> * malloc/malloc.h (reallocarray): New declaration.
> * stdlib/stdlib.h (reallocarray): Likewise.
> * malloc/reallocarray.c: New file.
> * malloc/tst-reallocarray.c: New test file.
> * manual/memory.texi: Document reallocarray.
> * sysdeps/unix/sysv/linux/aarch64/libc.abilist: Add reallocarray.
> * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist:
> Likewise.
> * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist:
> Likewise.
> * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise.
> * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/tilepro/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise.
> * sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise.
Ping