@cryptotaxi247 / netdata-1 / commits / 81de3f433

allow parsing empty json arrays and objects (#19685)

Costa Tsaousis committed Feb 20, 2025 at 16:28 UTC 81de3f433ede80d50c8373892f2aaf2b7a67b94e
1 file changed +14 -2
src/collectors/log2journal/log2journal-json.c
+14 -2
@@ -513,6 +513,12 @@ static inline bool json_parse_array(LOG_JSON_STATE *js) {
513
514 size_t index = 0;
515 do {
516 + const char *s = json_current_pos(js);
517 + if(*s == ']') {
518 + json_consume_char(js);
519 + break;
520 + }
521 +
522 if(!json_key_index_and_push(js, index))
523 return false;
524
@@ -524,7 +530,7 @@ static inline bool json_parse_array(LOG_JSON_STATE *js) {
530 if(!json_expect_char_after_white_space(js, ",]"))
531 return false;
532
527 - const char *s = json_current_pos(js);
533 + s = json_current_pos(js);
534 json_consume_char(js);
535 if(*s == ',') {
536 index++;
@@ -545,6 +551,12 @@ static inline bool json_parse_object(LOG_JSON_STATE *js) {
551 json_consume_char(js);
552
553 do {
554 + const char *s = json_current_pos(js);
555 + if(*s == '}') {
556 + json_consume_char(js);
557 + break;
558 + }
559 +
560 if (!json_expect_char_after_white_space(js, "\""))
561 return false;
562
@@ -564,7 +576,7 @@ static inline bool json_parse_object(LOG_JSON_STATE *js) {
576 if(!json_expect_char_after_white_space(js, ",}"))
577 return false;
578
567 - const char *s = json_current_pos(js);
579 + s = json_current_pos(js);
580 json_consume_char(js);
581 if(*s == ',')
582 continue;