Based on:

https://sourceware.org/git/?p=glibc.git;a=patch;h=1159a193696ad48ec86e5895f6dee3e539619c0e
https://sourceware.org/git/?p=glibc.git;a=patch;h=55e17aadc1ef17a1df9626fb0e9fba290ece3331
https://sourceware.org/git/?p=glibc.git;a=patch;h=b73ed247781d533628b681f57257dc85882645d3

From 1159a193696ad48ec86e5895f6dee3e539619c0e Mon Sep 17 00:00:00 2001
From: Will Newton <will.newton@linaro.org>
Date: Mon, 12 Aug 2013 15:08:02 +0100
Subject: [PATCH] malloc: Check for integer overflow in pvalloc.

From 55e17aadc1ef17a1df9626fb0e9fba290ece3331 Mon Sep 17 00:00:00 2001
From: Will Newton <will.newton@linaro.org>
Date: Fri, 16 Aug 2013 11:59:37 +0100
Subject: [PATCH] malloc: Check for integer overflow in valloc.

From b73ed247781d533628b681f57257dc85882645d3 Mon Sep 17 00:00:00 2001
From: Will Newton <will.newton@linaro.org>
Date: Fri, 16 Aug 2013 12:54:29 +0100
Subject: [PATCH] malloc: Check for integer overflow in memalign.

diff -Naur a/malloc/malloc.c b/malloc/malloc.c
--- a/malloc/malloc.c	2017-08-18 15:40:18.725284422 +0530
+++ b/malloc/malloc.c	2017-08-18 15:43:33.753004521 +0530
@@ -3019,6 +3019,13 @@
 
   /* Otherwise, ensure that it is at least a minimum chunk size */
   if (alignment <  MINSIZE) alignment = MINSIZE;
+ 
+  /* Check for overflow.  */
+  if (bytes > SIZE_MAX - alignment - MINSIZE)
+    {
+      __set_errno (ENOMEM);
+      return 0;
+    }
 
   arena_get(ar_ptr, bytes + alignment + MINSIZE);
   if(!ar_ptr)
@@ -3050,7 +3057,14 @@
     ptmalloc_init ();
 
   size_t pagesz = GLRO(dl_pagesize);
-
+ 
+  /* Check for overflow.  */
+  if (bytes > SIZE_MAX - pagesz - MINSIZE)
+    {
+      __set_errno (ENOMEM);
+      return 0;
+    }
+ 
   __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
 					const __malloc_ptr_t)) =
     force_reg (__memalign_hook);
@@ -3088,6 +3102,13 @@
   size_t page_mask = GLRO(dl_pagesize) - 1;
   size_t rounded_bytes = (bytes + page_mask) & ~(page_mask);
 
+  /* Check for overflow.  */
+  if (bytes > SIZE_MAX - 2*pagesz - MINSIZE)
+    {
+      __set_errno (ENOMEM);
+      return 0;
+    }
+ 
   __malloc_ptr_t (*hook) __MALLOC_PMT ((size_t, size_t,
 					const __malloc_ptr_t)) =
     force_reg (__memalign_hook);
