From 60f59976d909a2d77a47ef09140ffcdac2187d92 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 18 May 2002 22:06:54 +0000 Subject: [PATCH] New testcases. 2002-05-18 Matthias Clasen * tests/markups/fail-36.gmarkup: * tests/markups/fail-35.gmarkup: * tests/markups/valid-8.gmarkup: * tests/markups/valid-7.gmarkup: * tests/markups/valid-6.gmarkup: * tests/markups/valid-5.gmarkup: New testcases. * tests/markup-test.c (passthrough_handler): (text_handler): Don't ignore the text_len parameter. * glib/gmarkup.c (find_current_text_end): Don't hang on embedded nuls. (#81977) (g_markup_parse_context_parse): Fix passthrough handling to correctly skip processing instructions, comments, doctype declarations and CDATA marked sections. (#81977) --- ChangeLog | 18 ++++++++++++++++++ ChangeLog.pre-2-10 | 18 ++++++++++++++++++ ChangeLog.pre-2-12 | 18 ++++++++++++++++++ ChangeLog.pre-2-2 | 18 ++++++++++++++++++ ChangeLog.pre-2-4 | 18 ++++++++++++++++++ ChangeLog.pre-2-6 | 18 ++++++++++++++++++ ChangeLog.pre-2-8 | 18 ++++++++++++++++++ glib/gmarkup.c | 29 +++++++++++++++++++++++++---- tests/markup-test.c | 5 +++-- tests/markups/fail-35.gmarkup | 1 + tests/markups/fail-36.gmarkup | Bin 0 -> 13 bytes tests/markups/valid-5.gmarkup | 2 ++ tests/markups/valid-6.gmarkup | 4 ++++ tests/markups/valid-7.gmarkup | 2 ++ tests/markups/valid-8.gmarkup | 1 + tests/run-markup-tests.sh | 3 +++ 16 files changed, 167 insertions(+), 6 deletions(-) create mode 100644 tests/markups/fail-35.gmarkup create mode 100644 tests/markups/fail-36.gmarkup create mode 100644 tests/markups/valid-5.gmarkup create mode 100644 tests/markups/valid-6.gmarkup create mode 100644 tests/markups/valid-7.gmarkup create mode 100644 tests/markups/valid-8.gmarkup diff --git a/ChangeLog b/ChangeLog index 024e7a57..311a2c73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 024e7a57..311a2c73 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,21 @@ +2002-05-18 Matthias Clasen + + * tests/markups/fail-36.gmarkup: + * tests/markups/fail-35.gmarkup: + * tests/markups/valid-8.gmarkup: + * tests/markups/valid-7.gmarkup: + * tests/markups/valid-6.gmarkup: + * tests/markups/valid-5.gmarkup: New testcases. + + * tests/markup-test.c (passthrough_handler): + (text_handler): Don't ignore the text_len parameter. + + * glib/gmarkup.c (find_current_text_end): Don't hang on embedded + nuls. (#81977) + (g_markup_parse_context_parse): Fix passthrough handling to + correctly skip processing instructions, comments, doctype + declarations and CDATA marked sections. (#81977) + Sat May 18 00:21:51 2002 Tim Janik [merged from stable] diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 8f5c6b86..f7a2cbf4 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -97,6 +97,7 @@ struct _GMarkupParseContext guint document_empty : 1; guint parsing : 1; + gint balance; }; /** @@ -154,6 +155,8 @@ g_markup_parse_context_new (const GMarkupParser *parser, context->document_empty = TRUE; context->parsing = FALSE; + context->balance = 0; + return context; } @@ -722,8 +725,10 @@ find_current_text_end (GMarkupParseContext *context) p = context->current_text; next = g_utf8_find_next_char (p, end); - while (next) + while (next && *next) { + if (p == next) + next++; p = next; next = g_utf8_find_next_char (p, end); } @@ -963,6 +968,7 @@ g_markup_parse_context_parse (GMarkupParseContext *context, const gchar *openangle = "<"; add_to_partial (context, openangle, openangle + 1); context->start = context->iter; + context->balance = 1; context->state = STATE_INSIDE_PASSTHROUGH; } else if (*context->iter == '/') @@ -1493,13 +1499,28 @@ g_markup_parse_context_parse (GMarkupParseContext *context, g_free (close_name); } break; - + case STATE_INSIDE_PASSTHROUGH: /* Possible next state: AFTER_CLOSE_ANGLE */ do { - if (*context->iter == '>') - break; + if (*context->iter == '<') + context->balance++; + if (*context->iter == '>') + { + context->balance--; + add_to_partial (context, context->start, context->iter); + context->start = context->iter; + if ((g_str_has_prefix (context->partial_chunk->str, "partial_chunk->str, "?")) || + (g_str_has_prefix (context->partial_chunk->str, " + diff --git a/tests/markups/valid-8.gmarkup b/tests/markups/valid-8.gmarkup new file mode 100644 index 00000000..a75aee05 --- /dev/null +++ b/tests/markups/valid-8.gmarkup @@ -0,0 +1 @@ +>>> CDATA ]]> diff --git a/tests/run-markup-tests.sh b/tests/run-markup-tests.sh index 2078330e..fb650862 100755 --- a/tests/run-markup-tests.sh +++ b/tests/run-markup-tests.sh @@ -9,6 +9,9 @@ fail () for I in $srcdir/markups/fail-*.gmarkup; do echo "Parsing $I, should fail" ./markup-test $I > /dev/null && fail "failed to generate error on $I" + if test "$?" != "1"; then + fail "unexpected error on $I" + fi done for I in $srcdir/markups/valid-*.gmarkup; do -- 2.34.1