Add sanity check for a couple malloc() and make code more resilient

This commit is contained in:
Victor Hora
2018-11-04 22:04:34 -05:00
parent b3fa87dc7c
commit 9be0a407eb
4 changed files with 21 additions and 5 deletions

View File

@@ -2779,8 +2779,8 @@ int ip_tree_from_param(apr_pool_t *mp,
}
#ifdef WITH_CURL
size_t msc_curl_write_memory_cb(void *contents, size_t size,
size_t nmemb, void *userp)
size_t msc_curl_write_memory_cb(apr_pool_t *mp, void *contents, size_t size,
size_t nmemb, void *userp, char **error_msg)
{
size_t realsize = size * nmemb;
struct msc_curl_memory_buffer_t *mem = (struct msc_curl_memory_buffer_t *)userp;
@@ -2788,11 +2788,20 @@ size_t msc_curl_write_memory_cb(void *contents, size_t size,
if (mem->size == 0)
{
mem->memory = malloc(realsize + 1);
if (mem->memory == NULL) {
*error_msg = apr_psprintf(mp, "Unable to allocate buffer for mem->memory");
return 0;
}
memset(mem->memory, '\0', sizeof(realsize + 1));
}
else
{
mem->memory = realloc(mem->memory, mem->size + realsize + 1);
void *tmp;
tmp = mem->memory;
tmp = realloc(mem->memory, mem->size + realsize + 1);
if (tmp != NULL) {
mem->memory = tmp;
}
memset(mem->memory + mem->size, '\0', sizeof(realsize + 1));
}