diff options
author | Luis Ontanon <luis.ontanon@gmail.com> | 2005-03-06 21:57:25 +0000 |
---|---|---|
committer | Luis Ontanon <luis.ontanon@gmail.com> | 2005-03-06 21:57:25 +0000 |
commit | e6853d6645aa3638be0ae907dccb51481192e5e3 (patch) | |
tree | 9f0c699254863555b502c0baa14fd0c75e1202d9 /plugins/xml | |
parent | c57a54f3ec94162d7f3ac248f7302d3d36351b4a (diff) |
- Add some media types to be dissected as xml
- be more tollerant on how an XML document should look like
svn path=/trunk/; revision=13639
Diffstat (limited to 'plugins/xml')
-rw-r--r-- | plugins/xml/packet-xml.c | 6 | ||||
-rw-r--r-- | plugins/xml/xml_lexer.c | 126 | ||||
-rw-r--r-- | plugins/xml/xml_lexer.l | 8 |
3 files changed, 74 insertions, 66 deletions
diff --git a/plugins/xml/packet-xml.c b/plugins/xml/packet-xml.c index 1c80702cc5..1868d15b18 100644 --- a/plugins/xml/packet-xml.c +++ b/plugins/xml/packet-xml.c @@ -119,6 +119,7 @@ static void dissect_xml(tvbuff_t* tvb, packet_info* pinfo _U_, proto_tree* tree) GPtrArray* stack; #ifdef DEBUG_XML proto_tree* tree2 = NULL; + proto_tree* pt = NULL; #endif is_soap = FALSE; @@ -258,4 +259,9 @@ proto_reg_handoff_xml(void) xml_handle = find_dissector("xml"); dissector_add_string("media_type", "text/xml", xml_handle); + dissector_add_string("media_type", "application/smil", xml_handle); + dissector_add_string("media_type", "text/xml", xml_handle); + dissector_add_string("media_type", "application/xml", xml_handle); + dissector_add_string("media_type", "application/soap+xml", xml_handle); + } diff --git a/plugins/xml/xml_lexer.c b/plugins/xml/xml_lexer.c index c2ab62b768..220a9d6018 100644 --- a/plugins/xml/xml_lexer.c +++ b/plugins/xml/xml_lexer.c @@ -287,15 +287,15 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); #define YY_NUM_RULES 26 #define YY_END_OF_BUFFER 27 -static yyconst short int yy_accept[67] = +static yyconst short int yy_accept[68] = { 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, - 25, 25, 27, 26, 26, 3, 3, 4, 21, 26, + 25, 25, 27, 26, 16, 3, 3, 4, 21, 26, 23, 20, 7, 8, 6, 13, 26, 14, 25, 24, - 16, 9, 3, 3, 21, 22, 20, 0, 7, 6, - 13, 15, 14, 0, 25, 24, 0, 5, 2, 0, - 0, 19, 0, 0, 12, 0, 0, 17, 0, 18, - 0, 10, 0, 11, 1, 0 + 0, 5, 9, 3, 3, 21, 22, 20, 20, 0, + 7, 6, 13, 15, 14, 14, 0, 25, 24, 0, + 2, 0, 0, 19, 0, 0, 12, 1, 0, 17, + 0, 18, 0, 10, 0, 11, 0 } ; static yyconst int yy_ec[256] = @@ -332,70 +332,72 @@ static yyconst int yy_ec[256] = static yyconst int yy_meta[15] = { 0, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 1, 2, 1, 2, 2, 3, 4, 1, 1, 2 } ; -static yyconst short int yy_base[79] = +static yyconst short int yy_base[82] = { 0, - 55, 54, 0, 1, 10, 0, 23, 0, 36, 0, - 3, 6, 60, 126, 46, 0, 52, 44, 54, 42, - 126, 42, 50, 126, 0, 45, 34, 34, 0, 42, - 48, 126, 0, 31, 40, 126, 30, 58, 38, 0, - 37, 126, 25, 69, 0, 32, 27, 126, 0, 28, - 26, 1, 25, 23, 13, 20, 19, 126, 14, 126, - 14, 126, 9, 126, 126, 126, 83, 87, 91, 95, - 98, 0, 101, 105, 109, 113, 117, 121 + 58, 57, 0, 1, 10, 0, 23, 0, 36, 0, + 3, 6, 65, 126, 48, 0, 58, 0, 58, 47, + 126, 3, 56, 126, 0, 55, 44, 12, 0, 52, + 47, 126, 126, 0, 40, 45, 126, 0, 15, 58, + 44, 0, 43, 126, 0, 21, 69, 0, 42, 37, + 0, 38, 36, 20, 36, 31, 25, 126, 27, 126, + 24, 126, 15, 126, 10, 126, 126, 83, 87, 91, + 95, 98, 2, 101, 105, 1, 0, 109, 113, 117, + 121 } ; -static yyconst short int yy_def[79] = +static yyconst short int yy_def[82] = { 0, - 67, 67, 68, 68, 67, 5, 5, 7, 7, 9, - 69, 69, 66, 66, 66, 70, 70, 66, 66, 66, - 66, 71, 66, 66, 72, 66, 66, 73, 74, 74, - 66, 66, 70, 70, 66, 66, 71, 66, 66, 72, - 66, 66, 73, 66, 74, 74, 66, 66, 70, 75, - 76, 66, 77, 78, 66, 66, 75, 66, 76, 66, - 77, 66, 78, 66, 66, 0, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66 + 68, 68, 69, 69, 68, 5, 5, 7, 7, 9, + 70, 70, 67, 67, 67, 71, 71, 15, 67, 67, + 67, 72, 67, 67, 73, 67, 67, 74, 75, 75, + 67, 67, 67, 71, 71, 67, 67, 76, 72, 67, + 67, 73, 67, 67, 77, 74, 67, 75, 75, 67, + 71, 78, 79, 67, 80, 81, 67, 67, 78, 67, + 79, 67, 80, 67, 81, 67, 0, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67 } ; static yyconst short int yy_nxt[141] = { 0, - 66, 40, 66, 66, 30, 17, 17, 30, 52, 18, - 18, 19, 31, 64, 52, 31, 20, 62, 60, 15, - 55, 21, 58, 22, 23, 65, 55, 64, 62, 14, - 60, 58, 56, 46, 24, 44, 25, 26, 41, 39, - 38, 35, 49, 46, 44, 42, 41, 14, 27, 28, - 47, 39, 38, 36, 48, 35, 32, 34, 32, 66, - 32, 50, 51, 15, 15, 52, 66, 66, 66, 66, - 66, 52, 53, 54, 66, 66, 55, 66, 66, 66, - 66, 66, 55, 14, 14, 14, 14, 16, 16, 16, - 16, 29, 29, 29, 29, 33, 33, 66, 33, 37, - - 66, 37, 43, 66, 43, 45, 45, 66, 45, 57, - 57, 57, 57, 59, 59, 59, 59, 61, 61, 61, - 61, 63, 63, 63, 63, 13, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 + 67, 45, 38, 42, 30, 17, 17, 30, 38, 18, + 18, 19, 15, 40, 66, 15, 20, 45, 64, 15, + 38, 21, 47, 22, 23, 40, 45, 54, 62, 14, + 60, 47, 57, 54, 24, 66, 25, 26, 57, 64, + 62, 60, 58, 49, 43, 41, 36, 14, 27, 28, + 31, 51, 50, 49, 32, 44, 43, 41, 37, 36, + 33, 52, 53, 35, 67, 54, 15, 15, 67, 67, + 67, 54, 55, 56, 67, 67, 57, 67, 67, 67, + 67, 67, 57, 14, 14, 14, 14, 16, 16, 16, + 16, 29, 29, 29, 29, 34, 34, 67, 34, 39, + + 67, 39, 46, 67, 46, 48, 48, 67, 48, 59, + 59, 59, 59, 61, 61, 61, 61, 63, 63, 63, + 63, 65, 65, 65, 65, 13, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67 } ; static yyconst short int yy_chk[141] = { 0, - 0, 72, 0, 0, 11, 3, 4, 12, 52, 3, - 4, 5, 11, 63, 52, 12, 5, 61, 59, 5, - 55, 5, 57, 5, 7, 56, 55, 54, 53, 7, - 51, 50, 47, 46, 7, 43, 7, 9, 41, 39, - 37, 35, 34, 30, 28, 27, 26, 9, 9, 9, - 31, 23, 22, 20, 31, 19, 18, 17, 15, 13, - 31, 38, 38, 2, 1, 38, 0, 0, 0, 0, - 0, 38, 44, 44, 0, 0, 44, 0, 0, 0, - 0, 0, 44, 67, 67, 67, 67, 68, 68, 68, - 68, 69, 69, 69, 69, 70, 70, 0, 70, 71, - - 0, 71, 73, 0, 73, 74, 74, 0, 74, 75, - 75, 75, 75, 76, 76, 76, 76, 77, 77, 77, - 77, 78, 78, 78, 78, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 + 0, 77, 76, 73, 11, 3, 4, 12, 22, 3, + 4, 5, 11, 22, 65, 12, 5, 28, 63, 5, + 39, 5, 28, 5, 7, 39, 46, 54, 61, 7, + 59, 46, 57, 54, 7, 56, 7, 9, 57, 55, + 53, 52, 50, 49, 43, 41, 36, 9, 9, 9, + 15, 35, 31, 30, 15, 27, 26, 23, 20, 19, + 15, 40, 40, 17, 13, 40, 2, 1, 0, 0, + 0, 40, 47, 47, 0, 0, 47, 0, 0, 0, + 0, 0, 47, 68, 68, 68, 68, 69, 69, 69, + 69, 70, 70, 70, 70, 71, 71, 0, 71, 72, + + 0, 72, 74, 0, 74, 75, 75, 0, 75, 78, + 78, 78, 78, 79, 79, 79, 79, 80, 80, 80, + 80, 81, 81, 81, 81, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67 } ; static yy_state_type yy_last_accepting_state; @@ -463,7 +465,7 @@ char *yytext; #define META_TAG 4 #define OUT 5 -#line 467 "xml_lexer.c" +#line 469 "xml_lexer.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -616,7 +618,7 @@ YY_DECL #line 64 "xml_lexer.l" -#line 620 "xml_lexer.c" +#line 622 "xml_lexer.c" if ( yy_init ) { @@ -667,7 +669,7 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 67 ) + if ( yy_current_state >= 68 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -829,7 +831,7 @@ YY_RULE_SETUP #line 94 "xml_lexer.l" ECHO; YY_BREAK -#line 833 "xml_lexer.c" +#line 835 "xml_lexer.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): case YY_STATE_EOF(TAG): @@ -1126,7 +1128,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 67 ) + if ( yy_current_state >= 68 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1161,11 +1163,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 67 ) + if ( yy_current_state >= 68 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 66); + yy_is_jam = (yy_current_state == 67); return yy_is_jam ? 0 : yy_current_state; } diff --git a/plugins/xml/xml_lexer.l b/plugins/xml/xml_lexer.l index 9714b1d3a5..6cc0fd1d00 100644 --- a/plugins/xml/xml_lexer.l +++ b/plugins/xml/xml_lexer.l @@ -57,17 +57,17 @@ closetag_start "</" tag_start "<" tag_end ">" closedtag_end "/>" -name [A-Za-z][_A-Za-z0-9:]* +name [A-Za-z][-_A-Za-z0-9:]* whitespace [ \t\r\n]+ text [^<]* %START COMMENT TAG CLOSE_TAG META_TAG OUT %% -<OUT>{comment_start} { add_xml_item(XML_COMMENT_START, XML_CTX_COMMENT, yyleng, yytext); BEGIN COMMENT;} +{comment_start} { add_xml_item(XML_COMMENT_START, XML_CTX_COMMENT, yyleng, yytext); BEGIN COMMENT;} <COMMENT>{comment_end} { add_xml_item(XML_COMMENT_END, XML_CTX_COMMENT, yyleng, yytext); BEGIN OUT; } <COMMENT>{text} add_xml_item(XML_TEXT, XML_CTX_COMMENT, yyleng, yytext); <COMMENT>{tag_start} add_xml_item(XML_TEXT, XML_CTX_COMMENT, yyleng, yytext); -<OUT>{closetag_start} { add_xml_item(XML_CLOSE_TAG_START, XML_CTX_CLOSETAG, yyleng, yytext); BEGIN CLOSE_TAG; } +{closetag_start} { add_xml_item(XML_CLOSE_TAG_START, XML_CTX_CLOSETAG, yyleng, yytext); BEGIN CLOSE_TAG; } <CLOSE_TAG>{name} add_xml_item(XML_NAME, XML_CTX_CLOSETAG, yyleng, yytext); <CLOSE_TAG>{whitespace} add_xml_item(XML_WHITESPACE, XML_CTX_CLOSETAG, yyleng,yytext); <CLOSE_TAG>{tag_end} { add_xml_item(XML_TAG_END, XML_CTX_CLOSETAG, yyleng, yytext); BEGIN OUT; } @@ -80,7 +80,7 @@ text [^<]* <META_TAG>{name} add_xml_item(XML_NAME, XML_CTX_METATAG, yyleng, yytext); <META_TAG>{metatag_end} { add_xml_item(XML_METATAG_END, XML_CTX_METATAG, yyleng,yytext); BEGIN OUT; } -<OUT>{tag_start} { add_xml_item(XML_TAG_START, XML_CTX_TAG, yyleng, yytext); BEGIN TAG; } +{tag_start} { add_xml_item(XML_TAG_START, XML_CTX_TAG, yyleng, yytext); BEGIN TAG; } <TAG>{property_dq} add_xml_item(XML_PROPERTY, XML_CTX_TAG, yyleng, yytext); <TAG>{property_sq} add_xml_item(XML_PROPERTY, XML_CTX_TAG, yyleng, yytext); <TAG>{property_nq} add_xml_item(XML_PROPERTY, XML_CTX_TAG, yyleng, yytext); |