From b715d7b9fe90f5b411ae1c159553c7c287f0789a Mon Sep 17 00:00:00 2001 From: lutianxiong Date: Thu, 4 Jun 2020 14:58:06 +0800 Subject: fix potential memleak --- include/share/alloc.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/share/alloc.h b/include/share/alloc.h index edd3a79e..9b53b010 100644 --- a/include/share/alloc.h +++ b/include/share/alloc.h @@ -200,8 +200,10 @@ static inline void *safe_realloc_mul_2op_(void *ptr, size_t size1, size_t size2) { if(!size1 || !size2) return realloc(ptr, 0); /* preserve POSIX realloc(ptr, 0) semantics */ - if(size1 > SIZE_MAX / size2) + if(size1 > SIZE_MAX / size2) { + free(ptr); return 0; + } return safe_realloc_(ptr, size1*size2); } @@ -211,8 +213,10 @@ static inline void *safe_realloc_muladd2_(void *ptr, size_t size1, size_t size2, if(!size1 || (!size2 && !size3)) return realloc(ptr, 0); /* preserve POSIX realloc(ptr, 0) semantics */ size2 += size3; - if(size2 < size3) + if(size2 < size3) { + free(ptr); return 0; + } return safe_realloc_mul_2op_(ptr, size1, size2); } -- cgit v1.2.1