From 048f707f80e0d06e4ce36c94f3e0bcffa45703d2 Mon Sep 17 00:00:00 2001 From: simon987 Date: Fri, 6 Mar 2020 10:17:21 -0500 Subject: [PATCH] Fix buffer overflow in json parse function (index module) --- src/index/elastic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/index/elastic.c b/src/index/elastic.c index 0cff8a8..7764946 100644 --- a/src/index/elastic.c +++ b/src/index/elastic.c @@ -117,7 +117,11 @@ void *create_bulk_buffer(int max, int *count, size_t *buf_len) { } void *print_errors(response_t *r) { - cJSON *ret_json = cJSON_Parse(r->body); + char * tmp = malloc(r->size + 1); + memcpy(tmp, r->body, r->size); + *(tmp + r->size) = '\0'; + + cJSON *ret_json = cJSON_Parse(tmp); if (cJSON_GetObjectItem(ret_json, "errors")->valueint != 0) { cJSON *err; cJSON_ArrayForEach(err, cJSON_GetObjectItem(ret_json, "items")) { @@ -129,6 +133,7 @@ void *print_errors(response_t *r) { } } cJSON_Delete(ret_json); + free(tmp); } void _elastic_flush(int max) {