42 lines
1.2 KiB
Diff
42 lines
1.2 KiB
Diff
From b715d7b9fe90f5b411ae1c159553c7c287f0789a Mon Sep 17 00:00:00 2001
|
|
From: lutianxiong <lutianxiong@huawei.com>
|
|
Date: Thu, 4 Jun 2020 14:58:06 +0800
|
|
Subject: [PATCH] fix potential memleak
|
|
|
|
Reference:https://github.com/xiph/flac/commit/b715d7b9fe90f5b411ae1c159553c7c287f0789a
|
|
---
|
|
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);
|
|
}
|
|
|
|
--
|
|
2.27.0
|
|
|