aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-08-25 14:38:06 +0000
committerEvan Huus <eapache@gmail.com>2013-08-25 14:38:06 +0000
commit9d4df60b638cef84d2c64be7da9de72bd8628794 (patch)
tree7506cb8ca1c4314796894352d44f8ed91a07cf74
parent14e6dddcdc843d0631197c9bcac7f4f69d487e94 (diff)
Convert XMPP dissector suite to wmem.
svn path=/trunk/; revision=51514
-rw-r--r--epan/dissectors/packet-xmpp-core.c20
-rw-r--r--epan/dissectors/packet-xmpp-other.c8
-rw-r--r--epan/dissectors/packet-xmpp-utils.c68
-rw-r--r--epan/dissectors/packet-xmpp-utils.h17
-rw-r--r--epan/dissectors/packet-xmpp.c12
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);