Skip to content

Commit

Permalink
fixed #2473
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanlf committed May 22, 2023
1 parent 1e5ad5b commit 6f28c4c
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/utils/xml_parser.c
Expand Up @@ -191,6 +191,7 @@ struct _tag_sax_parser
GF_XMLAttribute *attrs;
GF_XMLSaxAttribute *sax_attrs;
u32 nb_attrs, nb_alloc_attrs;
u32 ent_rec_level;
};

static GF_XMLSaxAttribute *xml_get_sax_attribute(GF_SAXParser *parser)
Expand Down Expand Up @@ -902,7 +903,14 @@ static GF_Err xml_sax_parse(GF_SAXParser *parser, Bool force_parse)
parser->line_size = 0;
parser->elt_start_pos = 0;
parser->sax_state = SAX_STATE_TEXT_CONTENT;
e = gf_xml_sax_parse_intern(parser, orig_buf);
parser->ent_rec_level++;
if (parser->ent_rec_level>100) {
GF_LOG(GF_LOG_WARNING, GF_LOG_CORE, ("[XML] Too many recursions in entity solving, max 100 allowed\n"));
e = GF_NOT_SUPPORTED;
} else {
e = gf_xml_sax_parse_intern(parser, orig_buf);
parser->ent_rec_level--;
}
gf_free(orig_buf);
return e;
}
Expand Down Expand Up @@ -1075,8 +1083,9 @@ static GF_Err gf_xml_sax_parse_intern(GF_SAXParser *parser, char *current)
/*append entity*/
line_num = parser->line;
xml_sax_append_string(parser, ent->value);
xml_sax_parse(parser, GF_TRUE);
GF_Err e = xml_sax_parse(parser, GF_TRUE);
parser->line = line_num;
if (e) return e;

}
xml_sax_append_string(parser, current);
Expand Down

0 comments on commit 6f28c4c

Please sign in to comment.