@cryptotaxi247 / netdata-1 / commits / 28d82faf7

Fixed JSON parsing (#8426)

* Fixed an issue with the internal JSON parser which made it fail to parse ACLK challenge/response related payloads

Stelios Fragkakis committed Mar 18, 2020 at 21:33 UTC 28d82faf7f0460b4d38ed2b83ed3cea1ff5a7b10
2 files changed +4 -3
aclk/aclk_lws_https_client.c
+2 -1
@@ -35,9 +35,10 @@ static int simple_https_client_callback(struct lws *wsi, enum lws_callback_reaso
35 return -1;
36 }
37 ptr = perconn_data->data;
38 - n = perconn_data->data_size;
38 + n = perconn_data->data_size - 1;
39 if (lws_http_client_read(wsi, &ptr, &n) < 0)
40 return -1;
41 + ptr[n] = '\0';
42 return 0;
43 case LWS_CALLBACK_WSI_DESTROY:
44 debug(D_ACLK, "LWS_CALLBACK_WSI_DESTROY");
libnetdata/json/json.c
+2 -2
@@ -299,7 +299,7 @@ size_t json_walk_array(char *js, jsmntok_t *t, size_t nest, size_t start, JSON_E
299 memcpy(&ne, e, sizeof(JSON_ENTRY));
300 ne.type = JSON_ARRAY;
301 ne.data.items = t[start].size;
302 - ne.callback_function = NULL;
302 + ne.callback_function = e->callback_function;
303 ne.name[0]='\0';
304 ne.fullname[0]='\0';
305 if(e->callback_function) e->callback_function(&ne);
@@ -365,7 +365,7 @@ size_t json_walk_object(char *js, jsmntok_t *t, size_t nest, size_t start, JSON_
365 ne.original_string = &js[t[start].start];
366 memcpy(&ne, e, sizeof(JSON_ENTRY));
367 ne.type = JSON_OBJECT;
368 - ne.callback_function = NULL;
368 + ne.callback_function = e->callback_function;
369 if(e->callback_function) e->callback_function(&ne);
370 js[t[start].end] = old;
371