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;