diff options
author | Evan Huus <eapache@gmail.com> | 2013-08-25 14:38:06 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2013-08-25 14:38:06 +0000 |
commit | 9d4df60b638cef84d2c64be7da9de72bd8628794 (patch) | |
tree | 7506cb8ca1c4314796894352d44f8ed91a07cf74 /epan | |
parent | 14e6dddcdc843d0631197c9bcac7f4f69d487e94 (diff) |
Convert XMPP dissector suite to wmem.
svn path=/trunk/; revision=51514
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-xmpp-core.c | 20 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-other.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-utils.c | 68 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp-utils.h | 17 | ||||
-rw-r--r-- | epan/dissectors/packet-xmpp.c | 12 |
5 files changed, 63 insertions, 62 deletions
diff --git a/epan/dissectors/packet-xmpp-core.c b/epan/dissectors/packet-xmpp-core.c index d2307e1d81..7b0fdbc857 100644 --- a/epan/dissectors/packet-xmpp-core.c +++ b/epan/dissectors/packet-xmpp-core.c @@ -29,7 +29,7 @@ #include <glib.h> #include <epan/packet.h> -#include <epan/emem.h> +#include <epan/wmem/wmem.h> #include <epan/conversation.h> #include <epan/expert.h> @@ -168,28 +168,28 @@ xmpp_iq(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t *pac { gchar *jingle_sid, *ibb_sid, *gtalk_sid; - jingle_sid = (gchar *)se_tree_lookup_string(xmpp_info->jingle_sessions, attr_id->value, EMEM_TREE_STRING_NOCASE); + jingle_sid = (gchar *)wmem_tree_lookup_string(xmpp_info->jingle_sessions, attr_id->value, WMEM_TREE_STRING_NOCASE); if (jingle_sid) { proto_item *it = proto_tree_add_string(tree, hf_xmpp_jingle_session, tvb, 0, 0, jingle_sid); PROTO_ITEM_SET_GENERATED(it); } - ibb_sid = (gchar *)se_tree_lookup_string(xmpp_info->ibb_sessions, attr_id->value, EMEM_TREE_STRING_NOCASE); + ibb_sid = (gchar *)wmem_tree_lookup_string(xmpp_info->ibb_sessions, attr_id->value, WMEM_TREE_STRING_NOCASE); if (ibb_sid) { proto_item *it = proto_tree_add_string(tree, hf_xmpp_ibb, tvb, 0, 0, ibb_sid); PROTO_ITEM_SET_GENERATED(it); } - gtalk_sid = (gchar *)se_tree_lookup_string(xmpp_info->gtalk_sessions, attr_id->value, EMEM_TREE_STRING_NOCASE); + gtalk_sid = (gchar *)wmem_tree_lookup_string(xmpp_info->gtalk_sessions, attr_id->value, WMEM_TREE_STRING_NOCASE); if (gtalk_sid) { proto_item *it = proto_tree_add_string(tree, hf_xmpp_gtalk, tvb, 0, 0, gtalk_sid); PROTO_ITEM_SET_GENERATED(it); } - reqresp_trans = (xmpp_transaction_t *)se_tree_lookup_string(xmpp_info->req_resp, attr_id->value, EMEM_TREE_STRING_NOCASE); + reqresp_trans = (xmpp_transaction_t *)wmem_tree_lookup_string(xmpp_info->req_resp, attr_id->value, WMEM_TREE_STRING_NOCASE); /*displays request/response field in each iq packet*/ if (reqresp_trans) { @@ -234,7 +234,7 @@ xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t * xmpp_attr_t *fake_condition = NULL; - error_info = ep_strdup("Stanza error"); + error_info = wmem_strdup(wmem_packet_scope(), "Stanza error"); error_item = proto_tree_add_item(tree, hf_xmpp_error, tvb, element->offset, element->length, ENC_BIG_ENDIAN); error_tree = proto_item_add_subtree(error_item, ett_xmpp_query_item); @@ -245,7 +245,7 @@ xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t * fake_condition = xmpp_ep_init_attr_t(cond_element->name, cond_element->offset, cond_element->length); g_hash_table_insert(element->attrs, (gpointer)"condition", fake_condition); - error_info = ep_strdup_printf("%s: %s;", error_info, cond_element->name); + error_info = wmem_strdup_printf(wmem_packet_scope(), "%s: %s;", error_info, cond_element->name); } @@ -255,7 +255,7 @@ xmpp_error(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t * { xmpp_error_text(error_tree, tvb, text_element); - error_info = ep_strdup_printf("%s Text: %s", error_info, text_element->data?text_element->data->value:""); + error_info = wmem_strdup_printf(wmem_packet_scope(), "%s Text: %s", error_info, text_element->data?text_element->data->value:""); } expert_add_info_format_text(pinfo, error_item, &ei_xmpp_response, "%s", error_info); @@ -423,7 +423,7 @@ xmpp_message(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t { gchar *ibb_sid; - ibb_sid = (gchar *)se_tree_lookup_string(xmpp_info->ibb_sessions, id->value, EMEM_TREE_STRING_NOCASE); + ibb_sid = (gchar *)wmem_tree_lookup_string(xmpp_info->ibb_sessions, id->value, WMEM_TREE_STRING_NOCASE); if (ibb_sid) { proto_item *it = proto_tree_add_string(tree, hf_xmpp_ibb, tvb, 0, 0, ibb_sid); @@ -600,7 +600,7 @@ xmpp_failure_text(proto_tree *tree, tvbuff_t *tvb, xmpp_element_t *element) xmpp_attr_t *lang = xmpp_get_attr(element,"xml:lang"); proto_tree_add_text(tree, tvb, element->offset, element->length, "TEXT%s: %s", - lang?ep_strdup_printf("(%s)",lang->value):"", + lang?wmem_strdup_printf(wmem_packet_scope(), "(%s)",lang->value):"", element->data?element->data->value:""); } diff --git a/epan/dissectors/packet-xmpp-other.c b/epan/dissectors/packet-xmpp-other.c index b2c24ce59e..26927906bb 100644 --- a/epan/dissectors/packet-xmpp-other.c +++ b/epan/dissectors/packet-xmpp-other.c @@ -31,7 +31,7 @@ #include <glib.h> #include <epan/packet.h> -#include <epan/emem.h> +#include <epan/wmem/wmem.h> #include <epan/dissectors/packet-xml.h> @@ -860,7 +860,7 @@ xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t xmpp_element_t *cond, *id; - gchar *cond_value = ep_strdup(""); + gchar *cond_value = wmem_strdup(wmem_packet_scope(), ""); x_item = proto_tree_add_item(tree, hf_xmpp_x_event, tvb, element->offset, element->length, ENC_BIG_ENDIAN); x_tree = proto_item_add_subtree(x_item, ett_xmpp_x_event); @@ -874,9 +874,9 @@ xmpp_x_event(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, xmpp_element_t while((cond = xmpp_steal_element_by_names(element, cond_names, array_length(cond_names))) != NULL) { if(strcmp(cond_value,"") != 0) - cond_value = ep_strdup_printf("%s/%s",cond_value, cond->name); + cond_value = wmem_strdup_printf(wmem_packet_scope(), "%s/%s",cond_value, cond->name); else - cond_value = ep_strdup(cond->name); + cond_value = wmem_strdup(wmem_packet_scope(), cond->name); } fake_cond = xmpp_ep_init_attr_t(cond_value, element->offset, element->length); diff --git a/epan/dissectors/packet-xmpp-utils.c b/epan/dissectors/packet-xmpp-utils.c index 511ced0779..d5652c0a4d 100644 --- a/epan/dissectors/packet-xmpp-utils.c +++ b/epan/dissectors/packet-xmpp-utils.c @@ -54,26 +54,26 @@ xmpp_iq_reqresp_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info return; } - id = ep_strdup(attr_id->value); + id = wmem_strdup(wmem_packet_scope(), attr_id->value); if (!pinfo->fd->flags.visited) { - xmpp_trans = (xmpp_transaction_t *)se_tree_lookup_string(xmpp_info->req_resp, id, EMEM_TREE_STRING_NOCASE); + xmpp_trans = (xmpp_transaction_t *)wmem_tree_lookup_string(xmpp_info->req_resp, id, EMEM_TREE_STRING_NOCASE); if (xmpp_trans) { xmpp_trans->resp_frame = pinfo->fd->num; } else { - char *se_id = se_strdup(id); + char *se_id = wmem_strdup(wmem_file_scope(), id); - xmpp_trans = (xmpp_transaction_t *)se_alloc(sizeof (xmpp_transaction_t)); + xmpp_trans = wmem_new(wmem_file_scope(), xmpp_transaction_t); xmpp_trans->req_frame = pinfo->fd->num; xmpp_trans->resp_frame = 0; - se_tree_insert_string(xmpp_info->req_resp, se_id, (void *) xmpp_trans, EMEM_TREE_STRING_NOCASE); + wmem_tree_insert_string(xmpp_info->req_resp, se_id, (void *) xmpp_trans, EMEM_TREE_STRING_NOCASE); } } else { - se_tree_lookup_string(xmpp_info->req_resp, id, EMEM_TREE_STRING_NOCASE); + wmem_tree_lookup_string(xmpp_info->req_resp, id, EMEM_TREE_STRING_NOCASE); } } @@ -104,10 +104,10 @@ xmpp_jingle_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_ return; } - se_id = se_strdup(attr_id->value); - se_sid = se_strdup(attr_sid->value); + se_id = wmem_strdup(wmem_file_scope(), attr_id->value); + se_sid = wmem_strdup(wmem_file_scope(), attr_sid->value); - se_tree_insert_string(xmpp_info->jingle_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); + wmem_tree_insert_string(xmpp_info->jingle_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); } } @@ -142,10 +142,10 @@ xmpp_gtalk_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_i return; } - se_id = se_strdup(attr_id->value); - se_sid = se_strdup(attr_sid->value); + se_id = wmem_strdup(wmem_file_scope(), attr_id->value); + se_sid = wmem_strdup(wmem_file_scope(), attr_sid->value); - se_tree_insert_string(xmpp_info->gtalk_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); + wmem_tree_insert_string(xmpp_info->gtalk_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); } } @@ -184,9 +184,9 @@ xmpp_ibb_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_inf attr_sid = xmpp_get_attr(ibb_packet, "sid"); if(attr_id && attr_sid) { - se_id = se_strdup(attr_id->value); - se_sid = se_strdup(attr_sid->value); - se_tree_insert_string(xmpp_info->ibb_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); + se_id = wmem_strdup(wmem_file_scope(), attr_id->value); + se_sid = wmem_strdup(wmem_file_scope(), attr_sid->value); + wmem_tree_insert_string(xmpp_info->ibb_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE); } } } @@ -345,7 +345,7 @@ xmpp_ep_init_array_t(const gchar** array, gint len) { xmpp_array_t *result; - result = ep_new(xmpp_array_t); + result = wmem_new(wmem_packet_scope(), xmpp_array_t); result->data = (gpointer) array; result->length = len; @@ -356,7 +356,7 @@ xmpp_attr_t* xmpp_ep_init_attr_t(const gchar *value, gint offset, gint length) { xmpp_attr_t *result; - result = ep_new(xmpp_attr_t); + result = wmem_new(wmem_packet_scope(), xmpp_attr_t); result->value = value; result->offset = offset; result->length = length; @@ -370,7 +370,7 @@ xmpp_ep_string_upcase(const gchar* string) { gint len = (int)strlen(string); gint i; - gchar* result = (gchar *)ep_alloc0(len+1); + gchar* result = (gchar *)wmem_alloc0(wmem_packet_scope(), len+1); for(i=0; i<len; i++) { result[i] = string[i]; @@ -400,8 +400,8 @@ xmpp_find_element_by_name(xmpp_element_t *packet,const gchar *name) xmpp_element_t *search_element; /*create fake element only with name*/ - search_element = ep_new(xmpp_element_t); - search_element->name = ep_strdup(name); + search_element = wmem_new(wmem_packet_scope(), xmpp_element_t); + search_element->name = wmem_strdup(wmem_packet_scope(), name); found_elements = g_list_find_custom(packet->elements, search_element, xmpp_element_t_cmp); @@ -518,7 +518,7 @@ xmpp_element_t* xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb) { xml_frame_t *child; - xmpp_element_t *node = ep_new0(xmpp_element_t); + xmpp_element_t *node = wmem_new0(wmem_packet_scope(), xmpp_element_t); tvbparse_t* tt; tvbparse_elem_t* elem; @@ -529,7 +529,7 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu node->was_read = FALSE; node->default_ns_abbrev = NULL; - node->name = ep_strdup(xml_frame->name_orig_case); + node->name = wmem_strdup(wmem_packet_scope(), xml_frame->name_orig_case); node->offset = 0; node->length = 0; @@ -568,14 +568,14 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu gchar *value = NULL; gchar *xmlns_needle = NULL; - xmpp_attr_t *attr = ep_new(xmpp_attr_t); + xmpp_attr_t *attr = wmem_new(wmem_packet_scope(), xmpp_attr_t); attr->length = 0; attr->offset = 0; attr->was_read = FALSE; if (child->value != NULL) { l = tvb_reported_length(child->value); - value = (gchar *)ep_alloc0(l + 1); + value = (gchar *)wmem_alloc0(wmem_packet_scope(), l + 1); tvb_memcpy(child->value, value, 0, l); } @@ -586,7 +586,7 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu attr->offset = child->start_offset; attr->value = value; - attr->name = ep_strdup(child->name_orig_case); + attr->name = wmem_strdup(wmem_packet_scope(), child->name_orig_case); g_hash_table_insert(node->attrs,(gpointer)attr->name,(gpointer)attr); @@ -597,10 +597,10 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu { if(attr->name[5] == ':' && strlen(attr->name) > 6) { - g_hash_table_insert(node->namespaces, (gpointer)ep_strdup(&attr->name[6]), (gpointer)ep_strdup(attr->value)); + g_hash_table_insert(node->namespaces, (gpointer)wmem_strdup(wmem_packet_scope(), &attr->name[6]), (gpointer)wmem_strdup(wmem_packet_scope(), attr->value)); } else if(attr->name[5] == '\0') { - g_hash_table_insert(node->namespaces, (gpointer)"", (gpointer)ep_strdup(attr->value)); + g_hash_table_insert(node->namespaces, (gpointer)"", (gpointer)wmem_strdup(wmem_packet_scope(), attr->value)); } } @@ -612,13 +612,13 @@ xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbu gint l; gchar* value = NULL; - data = ep_new(xmpp_data_t); + data = wmem_new(wmem_packet_scope(), xmpp_data_t); data->length = 0; data->offset = 0; if (child->value != NULL) { l = tvb_reported_length(child->value); - value = (gchar *)ep_alloc0(l + 1); + value = (gchar *)wmem_alloc0(wmem_packet_scope(), l + 1); tvb_memcpy(child->value, value, 0, l); } @@ -701,11 +701,11 @@ xmpp_get_attr_ext(xmpp_element_t *element, const gchar* attr_name, const gchar* xmpp_attr_t *result; if(strcmp(ns_abbrev,"")==0) - search_phrase = ep_strdup(attr_name); + search_phrase = wmem_strdup(wmem_packet_scope(), attr_name); else if(strcmp(attr_name, "xmlns") == 0) - search_phrase = ep_strdup_printf("%s:%s",attr_name, ns_abbrev); + search_phrase = wmem_strdup_printf(wmem_packet_scope(), "%s:%s",attr_name, ns_abbrev); else - search_phrase = ep_strdup_printf("%s:%s", ns_abbrev, attr_name); + search_phrase = wmem_strdup_printf(wmem_packet_scope(), "%s:%s", ns_abbrev, attr_name); result = (xmpp_attr_t *)g_hash_table_lookup(element->attrs, search_phrase); @@ -796,7 +796,7 @@ proto_item_get_text(proto_item *item) return NULL; - result = ep_strdup(fi->rep->representation); + result = wmem_strdup(wmem_packet_scope(), fi->rep->representation); return result; } @@ -942,7 +942,7 @@ xmpp_name_attr_struct(const gchar *name, const gchar *attr_name, const gchar *at { name_attr_t *result; - result = ep_new(name_attr_t); + result = wmem_new(wmem_packet_scope(), name_attr_t); result->name = name; result->attr_name = attr_name; result->attr_value = attr_value; diff --git a/epan/dissectors/packet-xmpp-utils.h b/epan/dissectors/packet-xmpp-utils.h index 23290fd36b..0a522a2150 100644 --- a/epan/dissectors/packet-xmpp-utils.h +++ b/epan/dissectors/packet-xmpp-utils.h @@ -29,6 +29,7 @@ #include "ws_symbol_export.h" #include "tvbuff.h" #include "dissectors/packet-xml.h" +#include <epan/wmem/wmem.h> #define xmpp_elem_cdata(elem) \ elem->data?elem->data->value:"" @@ -114,10 +115,10 @@ typedef struct _xmpp_elem_info{ } xmpp_elem_info; typedef struct _xmpp_conv_info_t { - emem_tree_t *req_resp; - emem_tree_t *jingle_sessions; - emem_tree_t *ibb_sessions; - emem_tree_t *gtalk_sessions; + wmem_tree_t *req_resp; + wmem_tree_t *jingle_sessions; + wmem_tree_t *ibb_sessions; + wmem_tree_t *gtalk_sessions; guint32 ssl_start; guint32 ssl_proceed; } xmpp_conv_info_t; @@ -132,23 +133,23 @@ typedef struct _xmpp_reqresp_transaction_t { /** Function that is responsibe for request/response tracking in IQ packets. * Each IQ set/get packet should have the response in other IQ result/error packet. - * Both packet should have the same id attribute. Function saves in emem_tree pairs of + * Both packet should have the same id attribute. Function saves in wmem_tree pairs of * packet id and struct xmpp_transaction_t. */ extern void xmpp_iq_reqresp_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function that is responsibe for jingle session tracking in IQ packets. - * Function saves in emem_tree pairs of packet's id and Jingle session's id. + * Function saves in wmem_tree pairs of packet's id and Jingle session's id. */ extern void xmpp_jingle_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function that is responsibe for ibb(in band bytestreams) session tracking in IQ packets. - * Function saves in emem_tree pairs of packet's id and In-Band Bytestreams session's id. + * Function saves in wmem_tree pairs of packet's id and In-Band Bytestreams session's id. */ extern void xmpp_ibb_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); /** Function that is responsibe for GTalk session(voice/video) tracking in IQ packets. - * Function saves in emem_tree pairs of packet's id and GTalk session's id. + * Function saves in wmem_tree pairs of packet's id and GTalk session's id. */ extern void xmpp_gtalk_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info); diff --git a/epan/dissectors/packet-xmpp.c b/epan/dissectors/packet-xmpp.c index eda5ea1a02..001dd3b055 100644 --- a/epan/dissectors/packet-xmpp.c +++ b/epan/dissectors/packet-xmpp.c @@ -31,7 +31,7 @@ #include <glib.h> #include <epan/packet.h> -#include <epan/emem.h> +#include <epan/wmem/wmem.h> #include <epan/conversation.h> #include <epan/prefs.h> @@ -474,11 +474,11 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { return; if (!xmpp_info) { - xmpp_info = se_new(xmpp_conv_info_t); - xmpp_info->req_resp = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_req_resp"); - xmpp_info->jingle_sessions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_jingle_sessions"); - xmpp_info->ibb_sessions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_ibb_sessions"); - xmpp_info->gtalk_sessions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_gtalk_sessions"); + xmpp_info = wmem_new(wmem_file_scope(), xmpp_conv_info_t); + xmpp_info->req_resp = wmem_tree_new(wmem_file_scope()); + xmpp_info->jingle_sessions = wmem_tree_new(wmem_file_scope()); + xmpp_info->ibb_sessions = wmem_tree_new(wmem_file_scope()); + xmpp_info->gtalk_sessions = wmem_tree_new(wmem_file_scope()); xmpp_info->ssl_start = 0; xmpp_info->ssl_proceed = 0; conversation_add_proto_data(conversation, proto_xmpp, (void *) xmpp_info); |