mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-04 19:31:56 +00:00
Merge commit from fork
Co-authored-by: Jakub Karolczyk <jakub.karolczyk@signalwire.com>
This commit is contained in:
@@ -117,6 +117,74 @@ FST_MINCORE_BEGIN("./conf")
|
||||
free(xml_string);
|
||||
}
|
||||
FST_TEST_END()
|
||||
|
||||
FST_TEST_BEGIN(test_dtd)
|
||||
{
|
||||
const char *text = "<xml><!DOCTYPE Response [<!ENTITY lol \"haha\"><!ENTITY lol1 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\">]><Response><Say>&lol1;</Say></Response></xml>";
|
||||
switch_xml_t xml = switch_xml_parse_str_dynamic((char *)text, SWITCH_TRUE);
|
||||
char *xml_string = NULL;
|
||||
|
||||
fst_requires(xml);
|
||||
xml_string = switch_xml_toxml_ex(xml, SWITCH_FALSE, SWITCH_FALSE);
|
||||
fst_requires(xml_string);
|
||||
fst_check_string_equals(xml_string, "<xml>\n <Response>\n <Say>hahahahahahahahahahahahahahahahahahahaha</Say>\n </Response>\n</xml>\n");
|
||||
free(xml_string);
|
||||
switch_xml_free(xml);
|
||||
}
|
||||
FST_TEST_END()
|
||||
|
||||
FST_TEST_BEGIN(test_dtd_disable)
|
||||
{
|
||||
const char *text = "<xml><!DOCTYPE Response [<!ENTITY lol \"haha\"><!ENTITY lol1 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\">]><Response><Say>&lol1;</Say></Response></xml>";
|
||||
switch_xml_t xml = NULL;
|
||||
char *xml_string = NULL;
|
||||
|
||||
switch_core_set_variable("xml_disable_dtd", "true");
|
||||
xml = switch_xml_parse_str_dynamic((char *)text, SWITCH_TRUE);
|
||||
fst_requires(xml);
|
||||
xml_string = switch_xml_toxml_ex(xml, SWITCH_FALSE, SWITCH_FALSE);
|
||||
fst_requires(xml_string);
|
||||
fst_check_string_equals(xml_string, "<xml>\n <Response>\n <Say>&lol1;</Say>\n </Response>\n</xml>\n");
|
||||
free(xml_string);
|
||||
switch_xml_free(xml);
|
||||
switch_core_set_variable("xml_disable_dtd", "false");
|
||||
}
|
||||
FST_TEST_END()
|
||||
|
||||
FST_TEST_BEGIN(test_dtd_with_comments)
|
||||
{
|
||||
const char *text = "<xml><!DOCTYPE Response [<!--COMMENT1--><!ENTITY lol \"haha\"><!ENTITY lol1 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\"><!--COMMENT2-->]><Response><Say>&lol1;</Say></Response></xml>";
|
||||
switch_xml_t xml = NULL;
|
||||
char *xml_string = NULL;
|
||||
|
||||
xml = switch_xml_parse_str_dynamic((char *)text, SWITCH_TRUE);
|
||||
fst_requires(xml);
|
||||
xml_string = switch_xml_toxml_ex(xml, SWITCH_FALSE, SWITCH_FALSE);
|
||||
fst_requires(xml_string);
|
||||
fst_check_string_equals(xml_string, "<xml>\n <Response>\n <Say>hahahahahahahahahahahahahahahahahahahaha</Say>\n </Response>\n</xml>\n");
|
||||
free(xml_string);
|
||||
switch_xml_free(xml);
|
||||
}
|
||||
FST_TEST_END()
|
||||
|
||||
FST_TEST_BEGIN(test_dtd_disable_with_comments)
|
||||
{
|
||||
const char *text = "<xml><!DOCTYPE Response [<!--COMMENT1--><!ENTITY lol \"haha\"><!ENTITY lol1 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\"><!--COMMENT2-->]><Response><Say>&lol1;</Say></Response></xml>";
|
||||
switch_xml_t xml = NULL;
|
||||
char *xml_string = NULL;
|
||||
|
||||
switch_core_set_variable("xml_disable_dtd", "true");
|
||||
xml = switch_xml_parse_str_dynamic((char *)text, SWITCH_TRUE);
|
||||
fst_requires(xml);
|
||||
xml_string = switch_xml_toxml_ex(xml, SWITCH_FALSE, SWITCH_FALSE);
|
||||
fst_requires(xml_string);
|
||||
fst_check_string_equals(xml_string, "<xml>\n <Response>\n <Say>&lol1;</Say>\n </Response>\n</xml>\n");
|
||||
free(xml_string);
|
||||
switch_xml_free(xml);
|
||||
switch_core_set_variable("xml_disable_dtd", "false");
|
||||
}
|
||||
FST_TEST_END()
|
||||
|
||||
}
|
||||
FST_SUITE_END()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user