@@ -190,8 +190,8 @@ static int ra_parse_buffer(struct flb_record_accessor *ra, flb_sds_t buf)
190190 ++ quote_cnt ;
191191 }
192192 else if (buf [end ] == '.' && (quote_cnt & 0x01 )) {
193- // ignore '.' if it is inside a string/subkey
194- continue ;
193+ /* ignore '.' if it is inside a string/subkey */
194+ continue ;
195195 }
196196 else if (buf [end ] == '.' || buf [end ] == ' ' || buf [end ] == ',' || buf [end ] == '"' ) {
197197 break ;
@@ -229,7 +229,8 @@ static int ra_parse_buffer(struct flb_record_accessor *ra, flb_sds_t buf)
229229
230230 /* Append remaining string */
231231 if (i - 1 > end && pre < i ) {
232- rp_str = ra_parse_string (ra , buf , pre , i );
232+ end = flb_sds_len (buf );
233+ rp_str = ra_parse_string (ra , buf , pre , end );
233234 if (rp_str ) {
234235 mk_list_add (& rp_str -> _head , & ra -> list );
235236 }
@@ -610,6 +611,10 @@ int flb_ra_get_kv_pair(struct flb_record_accessor *ra, msgpack_object map,
610611 }
611612
612613 rp = mk_list_entry_first (& ra -> list , struct flb_ra_parser , _head );
614+ if (!rp -> key ) {
615+ return FLB_FALSE ;
616+ }
617+
613618 return flb_ra_key_value_get (rp -> key -> name , map , rp -> key -> subkeys ,
614619 start_key , out_key , out_val );
615620}
@@ -624,5 +629,9 @@ struct flb_ra_value *flb_ra_get_value_object(struct flb_record_accessor *ra,
624629 }
625630
626631 rp = mk_list_entry_first (& ra -> list , struct flb_ra_parser , _head );
632+ if (!rp -> key ) {
633+ return NULL ;
634+ }
635+
627636 return flb_ra_key_to_value (rp -> key -> name , map , rp -> key -> subkeys );
628637}
0 commit comments