aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorTomas Kukosa <tomas.kukosa@siemens.com>2008-09-24 10:42:24 +0000
committerTomas Kukosa <tomas.kukosa@siemens.com>2008-09-24 10:42:24 +0000
commit1e9ab739c360785763b438b1896e726eed1f58fe (patch)
tree37900409b40bf29a6b19ae711efd4f3866e4f3bb /epan
parentd2f9cdeb314cbc57ba0082995ed7a0f65aa5edd9 (diff)
put original tag name (not lowercase) into dissected xml structure too
dissect xml even if tree is null svn path=/trunk/; revision=26261
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-xml.c9
-rw-r--r--epan/dissectors/packet-xml.h1
2 files changed, 7 insertions, 3 deletions
diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c
index ea8a0095be..9b6f6453e4 100644
--- a/epan/dissectors/packet-xml.c
+++ b/epan/dissectors/packet-xml.c
@@ -174,8 +174,6 @@ dissect_xml(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
xml_frame_t* current_frame;
char* colinfo_str;
- if(!tree) return;
-
if (stack != NULL)
g_ptr_array_free(stack,TRUE);
@@ -277,6 +275,7 @@ static void before_xmpli(void* tvbparse_data, const void* wanted_data _U_, tvbpa
new_frame = ep_alloc(sizeof(xml_frame_t));
new_frame->type = XML_FRAME_XMPLI;
new_frame->name = name;
+ new_frame->name_orig_case = name;
insert_xml_frame(current_frame, new_frame);
new_frame->item = pi;
new_frame->last_item = pi;
@@ -308,7 +307,7 @@ static void before_tag(void* tvbparse_data, const void* wanted_data _U_, tvbpars
xml_frame_t* current_frame = g_ptr_array_index(stack,stack->len - 1);
tvbparse_elem_t* name_tok = tok->sub->next;
gchar* root_name;
- gchar* name = NULL;
+ gchar *name = NULL, *name_orig_case = NULL;
xml_ns_t* ns;
xml_frame_t* new_frame;
proto_item* pi;
@@ -321,6 +320,7 @@ static void before_tag(void* tvbparse_data, const void* wanted_data _U_, tvbpars
root_name = (gchar*)tvb_get_ephemeral_string(root_tok->tvb,root_tok->offset,root_tok->len);
name = (gchar*)tvb_get_ephemeral_string(leaf_tok->tvb,leaf_tok->offset,leaf_tok->len);
+ name_orig_case = name;
nameroot_ns = g_hash_table_lookup(xml_ns.elements,root_name);
@@ -335,6 +335,7 @@ static void before_tag(void* tvbparse_data, const void* wanted_data _U_, tvbpars
} else {
name = tvb_get_ephemeral_string(name_tok->tvb,name_tok->offset,name_tok->len);
+ name_orig_case = ep_strdup(name);
ascii_strdown_inplace(name);
if(current_frame->ns) {
@@ -358,6 +359,7 @@ static void before_tag(void* tvbparse_data, const void* wanted_data _U_, tvbpars
new_frame = ep_alloc(sizeof(xml_frame_t));
new_frame->type = XML_FRAME_TAG;
new_frame->name = name;
+ new_frame->name_orig_case = name_orig_case;
insert_xml_frame(current_frame, new_frame);
new_frame->item = pi;
new_frame->last_item = pi;
@@ -419,6 +421,7 @@ static void before_dtd_doctype(void* tvbparse_data, const void* wanted_data _U_,
new_frame = ep_alloc(sizeof(xml_frame_t));
new_frame->type = XML_FRAME_DTD_DOCTYPE;
new_frame->name = (gchar*)tvb_get_ephemeral_string(name_tok->tvb,name_tok->offset,name_tok->len);
+ new_frame->name_orig_case = new_frame->name;
insert_xml_frame(current_frame, new_frame);
new_frame->item = dtd_item;
new_frame->last_item = dtd_item;
diff --git a/epan/dissectors/packet-xml.h b/epan/dissectors/packet-xml.h
index 30e4c7dfa1..dd5c8e1437 100644
--- a/epan/dissectors/packet-xml.h
+++ b/epan/dissectors/packet-xml.h
@@ -67,6 +67,7 @@ typedef struct _xml_frame_t {
struct _xml_frame_t* prev_sibling;
struct _xml_frame_t* next_sibling;
const gchar *name;
+ const gchar *name_orig_case;
proto_tree* tree;
proto_item* item;
proto_item* last_item;