diff options
author | Kruzya <CrazyHackGUT@users.noreply.github.com> | 2018-09-15 08:55:11 +0300 |
---|---|---|
committer | Daniel Gustafsson <daniel@yesql.se> | 2018-09-17 14:07:47 +0200 |
commit | 23524bf85b887adbc513bc015c9530355967bc04 (patch) | |
tree | 0cc1999260c30e1941c72d5185e0a1ccce28e02c /docs/examples/postinmemory.c | |
parent | 927cb3708e29fd88dcfadb9444d0dc93dc2aa4b2 (diff) | |
download | curl-23524bf85b887adbc513bc015c9530355967bc04.tar.gz |
examples: Fix memory leaks from realloc errors
Make sure to not overwrite the reallocated pointer in realloc() calls
to avoid a memleak on memory errors.
Diffstat (limited to 'docs/examples/postinmemory.c')
-rw-r--r-- | docs/examples/postinmemory.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c index 488d227be..176f24af3 100644 --- a/docs/examples/postinmemory.c +++ b/docs/examples/postinmemory.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -39,13 +39,14 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) size_t realsize = size * nmemb; struct MemoryStruct *mem = (struct MemoryStruct *)userp; - mem->memory = realloc(mem->memory, mem->size + realsize + 1); - if(mem->memory == NULL) { + char *ptr = realloc(mem->memory, mem->size + realsize + 1); + if(!ptr) { /* out of memory! */ printf("not enough memory (realloc returned NULL)\n"); return 0; } + mem->memory = ptr; memcpy(&(mem->memory[mem->size]), contents, realsize); mem->size += realsize; mem->memory[mem->size] = 0; |