commit bdf42537c5792f6beb0360517ff378834cfd8a68
Author:     robert <robertrussell.72...@gmail.com>
AuthorDate: Sat Jul 30 14:29:05 2022 -0700
Commit:     Laslo Hunhold <d...@frign.de>
CommitDate: Sun Jul 31 11:41:08 2022 +0200

    Add reallocarray implementation
    
    reallocarray is nonstandard and glibc declares it only when _GNU_SOURCE
    is defined. Without this patch or _GNU_SOURCE (for glibc < 2.29) defined,
    you get a segfault from reallocarray being implicitly declared with the
    wrong signature.
    
    Signed-off-by: Laslo Hunhold <d...@frign.de>

diff --git a/gen/util.c b/gen/util.c
index d234ddd..c97a1ea 100644
--- a/gen/util.c
+++ b/gen/util.c
@@ -31,6 +31,16 @@ struct break_test_payload
        size_t *testlen;
 };
 
+static void *
+reallocarray(void *p, size_t len, size_t size)
+{
+       if (len > 0 && size > SIZE_MAX/len) {
+               errno = ENOMEM;
+               return NULL;
+       }
+       return realloc(p, len*size);
+}
+
 int
 hextocp(const char *str, size_t len, uint_least32_t *cp)
 {

Reply via email to