From aa6a4aa40c48f9a5904fdfc81b5931cc2e2b5680 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Nogueira?= Date: Mon, 24 May 2021 16:08:50 -0300 Subject: [PATCH] musl: backport reallocarray. It's in POSIX-future and some applications have started depending on it. It's easier to backport into musl than fix each individual package. Since we are adding a new interface to libc, update common/shlibs entry as well. This should probably have been done for all musl updates. --- common/shlibs | 2 +- srcpkgs/musl/patches/reallocarray.patch | 42 +++++++++++++++++++++++++ srcpkgs/musl/template | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/musl/patches/reallocarray.patch diff --git a/common/shlibs b/common/shlibs index 3de2c2bc64c2..72982a254874 100644 --- a/common/shlibs +++ b/common/shlibs @@ -16,7 +16,7 @@ # PLEASE NOTE: when multiple packages provide the same SONAME, the first # one (order top->bottom) is preferred over the next ones. # -libc.so musl-1.1.21_1 +libc.so musl-1.1.24_7 libc.so.6 glibc-2.32_1 libm.so.6 glibc-2.32_1 libpthread.so.0 glibc-2.32_1 diff --git a/srcpkgs/musl/patches/reallocarray.patch b/srcpkgs/musl/patches/reallocarray.patch new file mode 100644 index 000000000000..6d5faf32ccf5 --- /dev/null +++ b/srcpkgs/musl/patches/reallocarray.patch @@ -0,0 +1,42 @@ +From 821083ac7b54eaa040d5a8ddc67c6206a175e0ca Mon Sep 17 00:00:00 2001 +From: Ariadne Conill +Date: Sat, 1 Aug 2020 08:26:35 -0600 +Subject: [PATCH] implement reallocarray + +reallocarray is an extension introduced by OpenBSD, which introduces +calloc overflow checking to realloc. + +glibc 2.28 introduced support for this function behind _GNU_SOURCE, +while glibc 2.29 allows its usage in _DEFAULT_SOURCE. + +diff --git a/include/stdlib.h b/include/stdlib.h +index 194c2033..b54a051f 100644 +--- include/stdlib.h ++++ include/stdlib.h +@@ -145,6 +145,7 @@ int getloadavg(double *, int); + int clearenv(void); + #define WCOREDUMP(s) ((s) & 0x80) + #define WIFCONTINUED(s) ((s) == 0xffff) ++void *reallocarray (void *, size_t, size_t); + #endif + + #ifdef _GNU_SOURCE +diff --git a/src/malloc/reallocarray.c b/src/malloc/reallocarray.c +new file mode 100644 +index 00000000..4a6ebe46 +--- /dev/null ++++ src/malloc/reallocarray.c +@@ -0,0 +1,13 @@ ++#define _BSD_SOURCE ++#include ++#include ++ ++void *reallocarray(void *ptr, size_t m, size_t n) ++{ ++ if (n && m > -1 / n) { ++ errno = ENOMEM; ++ return 0; ++ } ++ ++ return realloc(ptr, m * n); ++} diff --git a/srcpkgs/musl/template b/srcpkgs/musl/template index 5ba5425709b0..337a3082faa9 100644 --- a/srcpkgs/musl/template +++ b/srcpkgs/musl/template @@ -2,7 +2,7 @@ pkgname=musl reverts="1.2.0_1" version=1.1.24 -revision=6 +revision=7 archs="*-musl" bootstrap=yes build_style=gnu-configure