Convert XMPP dissector suite to wmem.
svn path=/trunk/; revision=51514
This commit is contained in:
parent
14e6dddcdc
commit
9d4df60b63
|
@ -29,7 +29,7 @@
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include <epan/packet.h>
|
#include <epan/packet.h>
|
||||||
#include <epan/emem.h>
|
#include <epan/wmem/wmem.h>
|
||||||
#include <epan/conversation.h>
|
#include <epan/conversation.h>
|
||||||
#include <epan/expert.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;
|
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) {
|
if (jingle_sid) {
|
||||||
proto_item *it = proto_tree_add_string(tree, hf_xmpp_jingle_session, tvb, 0, 0, jingle_sid);
|
proto_item *it = proto_tree_add_string(tree, hf_xmpp_jingle_session, tvb, 0, 0, jingle_sid);
|
||||||
PROTO_ITEM_SET_GENERATED(it);
|
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) {
|
if (ibb_sid) {
|
||||||
proto_item *it = proto_tree_add_string(tree, hf_xmpp_ibb, tvb, 0, 0, ibb_sid);
|
proto_item *it = proto_tree_add_string(tree, hf_xmpp_ibb, tvb, 0, 0, ibb_sid);
|
||||||
PROTO_ITEM_SET_GENERATED(it);
|
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) {
|
if (gtalk_sid) {
|
||||||
proto_item *it = proto_tree_add_string(tree, hf_xmpp_gtalk, tvb, 0, 0, gtalk_sid);
|
proto_item *it = proto_tree_add_string(tree, hf_xmpp_gtalk, tvb, 0, 0, gtalk_sid);
|
||||||
PROTO_ITEM_SET_GENERATED(it);
|
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*/
|
/*displays request/response field in each iq packet*/
|
||||||
if (reqresp_trans) {
|
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;
|
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_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);
|
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);
|
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);
|
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);
|
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);
|
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;
|
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) {
|
if (ibb_sid) {
|
||||||
proto_item *it = proto_tree_add_string(tree, hf_xmpp_ibb, tvb, 0, 0, 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");
|
xmpp_attr_t *lang = xmpp_get_attr(element,"xml:lang");
|
||||||
|
|
||||||
proto_tree_add_text(tree, tvb, element->offset, element->length, "TEXT%s: %s",
|
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:"");
|
element->data?element->data->value:"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include <epan/packet.h>
|
#include <epan/packet.h>
|
||||||
#include <epan/emem.h>
|
#include <epan/wmem/wmem.h>
|
||||||
|
|
||||||
#include <epan/dissectors/packet-xml.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;
|
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_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);
|
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)
|
while((cond = xmpp_steal_element_by_names(element, cond_names, array_length(cond_names))) != NULL)
|
||||||
{
|
{
|
||||||
if(strcmp(cond_value,"") != 0)
|
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
|
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);
|
fake_cond = xmpp_ep_init_attr_t(cond_value, element->offset, element->length);
|
||||||
|
|
|
@ -54,26 +54,26 @@ xmpp_iq_reqresp_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
id = ep_strdup(attr_id->value);
|
id = wmem_strdup(wmem_packet_scope(), attr_id->value);
|
||||||
|
|
||||||
if (!pinfo->fd->flags.visited) {
|
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) {
|
if (xmpp_trans) {
|
||||||
xmpp_trans->resp_frame = pinfo->fd->num;
|
xmpp_trans->resp_frame = pinfo->fd->num;
|
||||||
|
|
||||||
} else {
|
} 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->req_frame = pinfo->fd->num;
|
||||||
xmpp_trans->resp_frame = 0;
|
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 {
|
} 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
se_id = se_strdup(attr_id->value);
|
se_id = wmem_strdup(wmem_file_scope(), attr_id->value);
|
||||||
se_sid = se_strdup(attr_sid->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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
se_id = se_strdup(attr_id->value);
|
se_id = wmem_strdup(wmem_file_scope(), attr_id->value);
|
||||||
se_sid = se_strdup(attr_sid->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");
|
attr_sid = xmpp_get_attr(ibb_packet, "sid");
|
||||||
if(attr_id && attr_sid)
|
if(attr_id && attr_sid)
|
||||||
{
|
{
|
||||||
se_id = se_strdup(attr_id->value);
|
se_id = wmem_strdup(wmem_file_scope(), attr_id->value);
|
||||||
se_sid = se_strdup(attr_sid->value);
|
se_sid = wmem_strdup(wmem_file_scope(), attr_sid->value);
|
||||||
se_tree_insert_string(xmpp_info->ibb_sessions, se_id, (void*) se_sid, EMEM_TREE_STRING_NOCASE);
|
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;
|
xmpp_array_t *result;
|
||||||
|
|
||||||
result = ep_new(xmpp_array_t);
|
result = wmem_new(wmem_packet_scope(), xmpp_array_t);
|
||||||
result->data = (gpointer) array;
|
result->data = (gpointer) array;
|
||||||
result->length = len;
|
result->length = len;
|
||||||
|
|
||||||
|
@ -356,7 +356,7 @@ xmpp_attr_t*
|
||||||
xmpp_ep_init_attr_t(const gchar *value, gint offset, gint length)
|
xmpp_ep_init_attr_t(const gchar *value, gint offset, gint length)
|
||||||
{
|
{
|
||||||
xmpp_attr_t *result;
|
xmpp_attr_t *result;
|
||||||
result = ep_new(xmpp_attr_t);
|
result = wmem_new(wmem_packet_scope(), xmpp_attr_t);
|
||||||
result->value = value;
|
result->value = value;
|
||||||
result->offset = offset;
|
result->offset = offset;
|
||||||
result->length = length;
|
result->length = length;
|
||||||
|
@ -370,7 +370,7 @@ xmpp_ep_string_upcase(const gchar* string)
|
||||||
{
|
{
|
||||||
gint len = (int)strlen(string);
|
gint len = (int)strlen(string);
|
||||||
gint i;
|
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++)
|
for(i=0; i<len; i++)
|
||||||
{
|
{
|
||||||
result[i] = string[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;
|
xmpp_element_t *search_element;
|
||||||
|
|
||||||
/*create fake element only with name*/
|
/*create fake element only with name*/
|
||||||
search_element = ep_new(xmpp_element_t);
|
search_element = wmem_new(wmem_packet_scope(), xmpp_element_t);
|
||||||
search_element->name = ep_strdup(name);
|
search_element->name = wmem_strdup(wmem_packet_scope(), name);
|
||||||
|
|
||||||
found_elements = g_list_find_custom(packet->elements, search_element, xmpp_element_t_cmp);
|
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)
|
xmpp_xml_frame_to_element_t(xml_frame_t *xml_frame, xmpp_element_t *parent, tvbuff_t *tvb)
|
||||||
{
|
{
|
||||||
xml_frame_t *child;
|
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_t* tt;
|
||||||
tvbparse_elem_t* elem;
|
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->was_read = FALSE;
|
||||||
node->default_ns_abbrev = NULL;
|
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->offset = 0;
|
||||||
node->length = 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 *value = NULL;
|
||||||
gchar *xmlns_needle = 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->length = 0;
|
||||||
attr->offset = 0;
|
attr->offset = 0;
|
||||||
attr->was_read = FALSE;
|
attr->was_read = FALSE;
|
||||||
|
|
||||||
if (child->value != NULL) {
|
if (child->value != NULL) {
|
||||||
l = tvb_reported_length(child->value);
|
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);
|
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->offset = child->start_offset;
|
||||||
attr->value = value;
|
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);
|
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)
|
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')
|
} 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;
|
gint l;
|
||||||
gchar* value = NULL;
|
gchar* value = NULL;
|
||||||
|
|
||||||
data = ep_new(xmpp_data_t);
|
data = wmem_new(wmem_packet_scope(), xmpp_data_t);
|
||||||
data->length = 0;
|
data->length = 0;
|
||||||
data->offset = 0;
|
data->offset = 0;
|
||||||
|
|
||||||
if (child->value != NULL) {
|
if (child->value != NULL) {
|
||||||
l = tvb_reported_length(child->value);
|
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);
|
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;
|
xmpp_attr_t *result;
|
||||||
|
|
||||||
if(strcmp(ns_abbrev,"")==0)
|
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)
|
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
|
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);
|
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;
|
return NULL;
|
||||||
|
|
||||||
|
|
||||||
result = ep_strdup(fi->rep->representation);
|
result = wmem_strdup(wmem_packet_scope(), fi->rep->representation);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -942,7 +942,7 @@ xmpp_name_attr_struct(const gchar *name, const gchar *attr_name, const gchar *at
|
||||||
{
|
{
|
||||||
name_attr_t *result;
|
name_attr_t *result;
|
||||||
|
|
||||||
result = ep_new(name_attr_t);
|
result = wmem_new(wmem_packet_scope(), name_attr_t);
|
||||||
result->name = name;
|
result->name = name;
|
||||||
result->attr_name = attr_name;
|
result->attr_name = attr_name;
|
||||||
result->attr_value = attr_value;
|
result->attr_value = attr_value;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "ws_symbol_export.h"
|
#include "ws_symbol_export.h"
|
||||||
#include "tvbuff.h"
|
#include "tvbuff.h"
|
||||||
#include "dissectors/packet-xml.h"
|
#include "dissectors/packet-xml.h"
|
||||||
|
#include <epan/wmem/wmem.h>
|
||||||
|
|
||||||
#define xmpp_elem_cdata(elem) \
|
#define xmpp_elem_cdata(elem) \
|
||||||
elem->data?elem->data->value:""
|
elem->data?elem->data->value:""
|
||||||
|
@ -114,10 +115,10 @@ typedef struct _xmpp_elem_info{
|
||||||
} xmpp_elem_info;
|
} xmpp_elem_info;
|
||||||
|
|
||||||
typedef struct _xmpp_conv_info_t {
|
typedef struct _xmpp_conv_info_t {
|
||||||
emem_tree_t *req_resp;
|
wmem_tree_t *req_resp;
|
||||||
emem_tree_t *jingle_sessions;
|
wmem_tree_t *jingle_sessions;
|
||||||
emem_tree_t *ibb_sessions;
|
wmem_tree_t *ibb_sessions;
|
||||||
emem_tree_t *gtalk_sessions;
|
wmem_tree_t *gtalk_sessions;
|
||||||
guint32 ssl_start;
|
guint32 ssl_start;
|
||||||
guint32 ssl_proceed;
|
guint32 ssl_proceed;
|
||||||
} xmpp_conv_info_t;
|
} 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.
|
/** 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.
|
* 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.
|
* 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);
|
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 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);
|
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 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);
|
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 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);
|
extern void xmpp_gtalk_session_track(packet_info *pinfo, xmpp_element_t *packet, xmpp_conv_info_t *xmpp_info);
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
#include <epan/packet.h>
|
#include <epan/packet.h>
|
||||||
#include <epan/emem.h>
|
#include <epan/wmem/wmem.h>
|
||||||
#include <epan/conversation.h>
|
#include <epan/conversation.h>
|
||||||
#include <epan/prefs.h>
|
#include <epan/prefs.h>
|
||||||
|
|
||||||
|
@ -474,11 +474,11 @@ dissect_xmpp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!xmpp_info) {
|
if (!xmpp_info) {
|
||||||
xmpp_info = se_new(xmpp_conv_info_t);
|
xmpp_info = wmem_new(wmem_file_scope(), xmpp_conv_info_t);
|
||||||
xmpp_info->req_resp = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_req_resp");
|
xmpp_info->req_resp = wmem_tree_new(wmem_file_scope());
|
||||||
xmpp_info->jingle_sessions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_jingle_sessions");
|
xmpp_info->jingle_sessions = wmem_tree_new(wmem_file_scope());
|
||||||
xmpp_info->ibb_sessions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_ibb_sessions");
|
xmpp_info->ibb_sessions = wmem_tree_new(wmem_file_scope());
|
||||||
xmpp_info->gtalk_sessions = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "xmpp_gtalk_sessions");
|
xmpp_info->gtalk_sessions = wmem_tree_new(wmem_file_scope());
|
||||||
xmpp_info->ssl_start = 0;
|
xmpp_info->ssl_start = 0;
|
||||||
xmpp_info->ssl_proceed = 0;
|
xmpp_info->ssl_proceed = 0;
|
||||||
conversation_add_proto_data(conversation, proto_xmpp, (void *) xmpp_info);
|
conversation_add_proto_data(conversation, proto_xmpp, (void *) xmpp_info);
|
||||||
|
|
Loading…
Reference in New Issue