Mercurial > pidgin
annotate libpurple/tests/test_xmlnode.c @ 32366:ae0fa8a95fd9
We haven't used this pref in a while. We stopped adding it in
revision 106592f58365ca74fb7446ca751df08904021b9d. We also need
to stop trying to rename it, and we should remove it if it
exists.
For 3.0.0 we should go through the prefs that we're migrating and
removing and stop migrating/removing them if we've been doing it
since before 2.0.0.
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Mon, 28 Nov 2011 08:52:34 +0000 |
| parents | 8d3b5853b017 |
| children |
| rev | line source |
|---|---|
|
31680
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
1 #include <string.h> |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
2 |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
3 #include "tests.h" |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
4 #include "../xmlnode.h" |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
5 |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
6 /* |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
7 * If we really wanted to test the billion laughs attack we would |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
8 * need to have more than just 4 ha's. But as long as this shorter |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
9 * document fails to parse, the longer one should also fail to parse. |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
10 */ |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
11 START_TEST(test_xmlnode_billion_laughs_attack) |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
12 { |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
13 const char *malicious_xml_doc = "<!DOCTYPE root [ <!ENTITY ha \"Ha !\"><!ENTITY ha2 \"&ha; &ha;\"><!ENTITY ha3 \"&ha2; &ha2;\"> ]><root>&ha3;</root>"; |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
14 |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
15 /* Uncomment this line if you want to see the error message given by |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
16 the parser for the above XML document */ |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
17 /* purple_debug_set_enabled(TRUE); */ |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
18 |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
19 fail_if(xmlnode_from_str(malicious_xml_doc, -1), |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
20 "xmlnode_from_str() returned an XML tree, but we didn't want it to"); |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
21 } |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
22 END_TEST |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
23 |
|
32037
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
24 #define check_doc_structure(x) { \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
25 xmlnode *ping, *child1, *child2; \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
26 fail_if(x == NULL, "Failed to parse document"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
27 ping = xmlnode_get_child(x, "ping"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
28 fail_if(ping == NULL, "Failed to find 'ping' child"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
29 child1 = xmlnode_get_child(ping, "child1"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
30 fail_if(child1 == NULL, "Failed to find 'child1'"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
31 child2 = xmlnode_get_child(child1, "child2"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
32 fail_if(child2 == NULL, "Failed to find 'child2'"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
33 xmlnode_new_child(child2, "a"); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
34 \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
35 assert_string_equal("jabber:client", xmlnode_get_namespace(x)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
36 /* NOTE: xmlnode_get_namespace() returns the namespace of the element, not the |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
37 * current default namespace. See http://www.w3.org/TR/xml-names/#defaulting and |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
38 * http://www.w3.org/TR/xml-names/#dt-defaultNS. |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
39 */ \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
40 assert_string_equal("urn:xmpp:ping", xmlnode_get_namespace(ping)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
41 assert_string_equal("jabber:client", xmlnode_get_namespace(child1)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
42 assert_string_equal("urn:xmpp:ping", xmlnode_get_namespace(child2)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
43 /* |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
44 * This fails (well, actually crashes [the ns is NULL]) unless |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
45 * xmlnode_new_child() actually sets the element namespace. |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
46 assert_string_equal("jabber:client", xmlnode_get_namespace(xmlnode_get_child(child2, "a"))); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
47 */ \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
48 \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
49 assert_string_equal("jabber:client", xmlnode_get_default_namespace(x)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
50 assert_string_equal("jabber:client", xmlnode_get_default_namespace(ping)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
51 assert_string_equal("jabber:client", xmlnode_get_default_namespace(child1)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
52 assert_string_equal("jabber:client", xmlnode_get_default_namespace(child2)); \ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
53 } |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
54 |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
55 START_TEST(test_xmlnode_prefixes) |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
56 { |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
57 const char *xml_doc = |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
58 "<iq type='get' xmlns='jabber:client' xmlns:ping='urn:xmpp:ping'>" |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
59 "<ping:ping>" |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
60 "<child1>" |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
61 "<ping:child2></ping:child2>" /* xmlns='jabber:child' */ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
62 "</child1>" |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
63 "</ping:ping>" |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
64 "</iq>"; |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
65 char *str; |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
66 xmlnode *xml, *reparsed; |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
67 |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
68 xml = xmlnode_from_str(xml_doc, -1); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
69 check_doc_structure(xml); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
70 |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
71 /* Check that xmlnode_from_str(xmlnode_to_str(xml, NULL), -1) is idempotent. */ |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
72 str = xmlnode_to_str(xml, NULL); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
73 fail_if(str == NULL, "Failed to serialize XMLnode"); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
74 reparsed = xmlnode_from_str(str, -1); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
75 fail_if(reparsed == NULL, "Failed to reparse xml document"); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
76 check_doc_structure(reparsed); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
77 |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
78 g_free(str); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
79 xmlnode_free(xml); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
80 xmlnode_free(reparsed); |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
81 } |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
82 END_TEST |
|
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
83 |
|
32038
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
84 |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
85 START_TEST(test_strip_prefixes) |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
86 { |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
87 const char *xml_doc = "<message xmlns='jabber:client' from='user@gmail.com/resource' to='another_user@darkrain42.org' type='chat' id='purple'>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
88 "<cha:active xmlns:cha='http://jabber.org/protocol/chatstates'/>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
89 "<body>xvlc xvlc</body>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
90 "<im:html xmlns:im='http://jabber.org/protocol/xhtml-im'>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
91 "<xht:body xmlns:xht='http://www.w3.org/1999/xhtml'>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
92 "<xht:p>xvlc <xht:span style='font-weight: bold;'>xvlc</xht:span></xht:p>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
93 "</xht:body>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
94 "</im:html>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
95 "</message>"; |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
96 const char *out = "<message xmlns='jabber:client' from='user@gmail.com/resource' to='another_user@darkrain42.org' type='chat' id='purple'>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
97 "<active xmlns:cha='http://jabber.org/protocol/chatstates' xmlns='http://jabber.org/protocol/chatstates'/>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
98 "<body>xvlc xvlc</body>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
99 "<html xmlns:im='http://jabber.org/protocol/xhtml-im' xmlns='http://jabber.org/protocol/xhtml-im'>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
100 "<body xmlns:xht='http://www.w3.org/1999/xhtml' xmlns='http://www.w3.org/1999/xhtml'>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
101 "<p>xvlc <span style='font-weight: bold;'>xvlc</span></p>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
102 "</body>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
103 "</html>" |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
104 "</message>"; |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
105 char *str; |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
106 xmlnode *xml; |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
107 |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
108 xml = xmlnode_from_str(xml_doc, -1); |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
109 fail_if(xml == NULL, "Failed to parse XML"); |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
110 |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
111 xmlnode_strip_prefixes(xml); |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
112 str = xmlnode_to_str(xml, NULL); |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
113 assert_string_equal_free(out, str); |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
114 |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
115 xmlnode_free(xml); |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
116 } |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
117 END_TEST |
|
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
118 |
|
31680
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
119 Suite * |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
120 xmlnode_suite(void) |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
121 { |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
122 Suite *s = suite_create("Utility Functions"); |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
123 |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
124 TCase *tc = tcase_create("xmlnode"); |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
125 tcase_add_test(tc, test_xmlnode_billion_laughs_attack); |
|
32037
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
126 tcase_add_test(tc, test_xmlnode_prefixes); |
|
32038
8d3b5853b017
xmlnode: Add xmlnode_strip_prefixes
Paul Aurich <paul@darkrain42.org>
parents:
32037
diff
changeset
|
127 tcase_add_test(tc, test_strip_prefixes); |
|
32037
114a98da1a5f
xmlnode: Fix some brokeness in xmlnode serialization with prefixed elements.
Paul Aurich <paul@darkrain42.org>
parents:
31680
diff
changeset
|
128 |
|
31680
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
129 suite_add_tcase(s, tc); |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
130 |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
131 return s; |
|
c8f91310bfbf
Add a silly little check to make sure our xml parser isn't vulnerable to the
Mark Doliner <mark@kingant.net>
parents:
diff
changeset
|
132 } |
