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