Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-09-03 22:37:08 +0300
committerJunio C Hamano <gitster@pobox.com>2020-09-03 22:37:08 +0300
commit56b891ead142b4df001e2f917665ad5840a02820 (patch)
treef605a102de77d622fa4c4cb94e12a134351a7486
parent2f1757e60af788904fcaa37d6d410f834fa3055f (diff)
parent6479ea4a8aaa64bda350bc5324ac351900da87ae (diff)
Merge branch 'jk/xrealloc-avoid-use-after-free'
It was possible for xrealloc() to send a non-NULL pointer that has been freed, which has been fixed. * jk/xrealloc-avoid-use-after-free: xrealloc: do not reuse pointer freed by zero-length realloc()
-rw-r--r--wrapper.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/wrapper.c b/wrapper.c
index 4ff4a9c3db..bcda41e374 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -117,10 +117,13 @@ void *xrealloc(void *ptr, size_t size)
{
void *ret;
+ if (!size) {
+ free(ptr);
+ return xmalloc(0);
+ }
+
memory_limit_check(size, 0);
ret = realloc(ptr, size);
- if (!ret && !size)
- ret = realloc(ptr, 1);
if (!ret)
die("Out of memory, realloc failed");
return ret;