Lines 36-43
Link Here
|
36 |
return rv; |
36 |
return rv; |
37 |
|
37 |
|
38 |
rv = apr_file_puts("<?xml version=\"1.0\" ?>\n<maryx>" |
38 |
rv = apr_file_puts("<?xml version=\"1.0\" ?>\n<maryx>" |
39 |
"<had a=\"little\"/><lamb its='fleece " |
39 |
"<had a=\"little\"/><lamb/>\n", *fd); |
40 |
"was white as snow' />\n", *fd); |
|
|
41 |
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); |
40 |
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); |
42 |
|
41 |
|
43 |
for (i = 0; i < 5000; i++) { |
42 |
for (i = 0; i < 5000; i++) { |
Lines 75-81
Link Here
|
75 |
|
74 |
|
76 |
for (i = 0; i < 5000; i++) { |
75 |
for (i = 0; i < 5000; i++) { |
77 |
rv = apr_file_puts("<hmm roast=\"lamb\" " |
76 |
rv = apr_file_puts("<hmm roast=\"lamb\" " |
78 |
"for=\"dinner\">yummy</hmm>\n", *fd); |
77 |
"for=\"dinner <>=\">yummy</hmm>\n", *fd); |
79 |
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); |
78 |
ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); |
80 |
} |
79 |
} |
81 |
|
80 |
|
Lines 103-109
Link Here
|
103 |
a = e->attr; |
102 |
a = e->attr; |
104 |
ABTS_PTR_NOTNULL(tc, a); |
103 |
ABTS_PTR_NOTNULL(tc, a); |
105 |
ABTS_STR_EQUAL(tc, "for", a->name); |
104 |
ABTS_STR_EQUAL(tc, "for", a->name); |
106 |
ABTS_STR_EQUAL(tc, "dinner", a->value); |
105 |
ABTS_STR_EQUAL(tc, "dinner <>=", a->value); |
107 |
a = a->next; |
106 |
a = a->next; |
108 |
ABTS_PTR_NOTNULL(tc, a); |
107 |
ABTS_PTR_NOTNULL(tc, a); |
109 |
ABTS_STR_EQUAL(tc, "roast", a->name); |
108 |
ABTS_STR_EQUAL(tc, "roast", a->name); |
Lines 149-159
Link Here
|
149 |
ABTS_TRUE(tc, rv != APR_SUCCESS); |
148 |
ABTS_TRUE(tc, rv != APR_SUCCESS); |
150 |
} |
149 |
} |
151 |
|
150 |
|
|
|
151 |
static void test_billion_laughs(abts_case *tc, void *data) |
152 |
{ |
153 |
apr_file_t *fd; |
154 |
apr_xml_parser *parser; |
155 |
apr_xml_doc *doc; |
156 |
apr_status_t rv; |
157 |
|
158 |
rv = apr_file_open(&fd, "data/billion-laughs.xml", |
159 |
APR_FOPEN_READ, 0, p); |
160 |
APR_ASSERT_SUCCESS(tc, "open billion-laughs.xml", rv); |
161 |
|
162 |
rv = apr_xml_parse_file(p, &parser, &doc, fd, 2000); |
163 |
ABTS_TRUE(tc, rv != APR_SUCCESS); |
164 |
|
165 |
apr_file_close(fd); |
166 |
} |
167 |
|
152 |
abts_suite *testxml(abts_suite *suite) |
168 |
abts_suite *testxml(abts_suite *suite) |
153 |
{ |
169 |
{ |
154 |
suite = ADD_SUITE(suite); |
170 |
suite = ADD_SUITE(suite); |
155 |
|
171 |
|
156 |
abts_run_test(suite, test_xml_parser, NULL); |
172 |
abts_run_test(suite, test_xml_parser, NULL); |
|
|
173 |
abts_run_test(suite, test_billion_laughs, NULL); |
157 |
|
174 |
|
158 |
return suite; |
175 |
return suite; |
159 |
} |
176 |
} |