From cd0b5c85862447b7df1983d070606c504026ffea Mon Sep 17 00:00:00 2001 From: aipsel Date: Tue, 29 Dec 2015 00:45:10 +0800 Subject: [PATCH] Fix to avoid memory leak. If received data is invalid, this method can cause memory leak. --- src/manager.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/manager.c b/src/manager.c index f44289d4..650effa8 100644 --- a/src/manager.c +++ b/src/manager.c @@ -211,14 +211,12 @@ static struct server *get_server(char *buf, int len) { char *data = get_data(buf, len); char error_buf[512]; - struct server *server = (struct server *)malloc(sizeof(struct server)); if (data == NULL) { LOGE("No data found"); return NULL; } - memset(server, 0, sizeof(struct server)); json_settings settings = { 0 }; json_value *obj = json_parse_ex(&settings, data, strlen(data), error_buf); @@ -227,6 +225,8 @@ static struct server *get_server(char *buf, int len) return NULL; } + struct server *server = (struct server *)malloc(sizeof(struct server)); + memset(server, 0, sizeof(struct server)); if (obj->type == json_object) { int i = 0; for (i = 0; i < obj->u.object.length; i++) { @@ -244,8 +244,7 @@ static struct server *get_server(char *buf, int len) } } else { LOGE("invalid data: %s", data); - json_value_free(obj); - return NULL; + break; } } }