summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/check_http.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c
index a9c22389..c23625e9 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -1399,7 +1399,6 @@ char *unchunk_content(const char *content) {
1399 char *endptr; 1399 char *endptr;
1400 long length_of_chunk = 0; 1400 long length_of_chunk = 0;
1401 size_t overall_size = 0; 1401 size_t overall_size = 0;
1402 char *result_ptr;
1403 1402
1404 while (true) { 1403 while (true) {
1405 size_of_chunk = strtol(pointer, &endptr, 16); 1404 size_of_chunk = strtol(pointer, &endptr, 16);
@@ -1446,7 +1445,6 @@ char *unchunk_content(const char *content) {
1446 } 1445 }
1447 return NULL; 1446 return NULL;
1448 } 1447 }
1449 result_ptr = result;
1450 } else { 1448 } else {
1451 void *tmp = realloc(result, overall_size); 1449 void *tmp = realloc(result, overall_size);
1452 if (tmp == NULL) { 1450 if (tmp == NULL) {
@@ -1454,11 +1452,12 @@ char *unchunk_content(const char *content) {
1454 printf("Failed to allocate memory for unchunked body\n"); 1452 printf("Failed to allocate memory for unchunked body\n");
1455 } 1453 }
1456 return NULL; 1454 return NULL;
1455 } else {
1456 result = tmp;
1457 } 1457 }
1458 } 1458 }
1459 1459
1460 memcpy(result_ptr, start_of_chunk, size_of_chunk); 1460 memcpy(result + (overall_size - size_of_chunk), start_of_chunk, size_of_chunk);
1461 result_ptr = result_ptr + size_of_chunk;
1462 } 1461 }
1463 1462
1464 result[overall_size] = '\0'; 1463 result[overall_size] = '\0';