diff --git a/debian/libwireshark0.symbols b/debian/libwireshark0.symbols index be43b8cc17..b5a2d1ee48 100644 --- a/debian/libwireshark0.symbols +++ b/debian/libwireshark0.symbols @@ -964,7 +964,7 @@ libwireshark.so.0 libwireshark0 #MINVER# next_tvb_add_string@Base 1.9.1 next_tvb_add_uint@Base 1.9.1 next_tvb_call@Base 1.9.1 - next_tvb_init@Base 1.9.1 + next_tvb_list_new@Base 3.5.0 nmas_subverb_enum@Base 2.1.0 nt_cmd_vals_ext@Base 1.9.1 num_tree_types@Base 1.9.1 diff --git a/epan/dissectors/asn1/h225/h225.cnf b/epan/dissectors/asn1/h225/h225.cnf index 024975a3b6..a4a5c80b9d 100644 --- a/epan/dissectors/asn1/h225/h225.cnf +++ b/epan/dissectors/asn1/h225/h225.cnf @@ -385,14 +385,14 @@ IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber tvbuff_t *h245_tvb = NULL; %(DEFAULT_BODY)s - next_tvb_add_handle(&h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); + next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); #.END #---------------------------------------------------------------------------------------- #.FN_BODY H245Control/_item VAL_PTR = &h245_tvb tvbuff_t *h245_tvb = NULL; %(DEFAULT_BODY)s - next_tvb_add_handle(&h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); + next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); #.END #---------------------------------------------------------------------------------------- #.FN_HDR H323-UU-PDU/h323-message-body/empty @@ -792,7 +792,7 @@ IsupNumber/nationalStandardPartyNumber isupNationalStandardPartyNumber tvbuff_t *next_tvb = NULL; %(DEFAULT_BODY)s - next_tvb_add_handle(&tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle); + next_tvb_add_handle(tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle); #.END #--- NonStandardParameter --------------------------------------------------------------- diff --git a/epan/dissectors/asn1/h225/packet-h225-template.c b/epan/dissectors/asn1/h225/packet-h225-template.c index 208e6dafca..01c77ec2f8 100644 --- a/epan/dissectors/asn1/h225/packet-h225-template.c +++ b/epan/dissectors/asn1/h225/packet-h225-template.c @@ -99,8 +99,8 @@ static dissector_handle_t h4501_handle=NULL; static dissector_handle_t nsp_handle; static dissector_handle_t tp_handle; -static next_tvb_list_t h245_list; -static next_tvb_list_t tp_list; +static next_tvb_list_t *h245_list; +static next_tvb_list_t *tp_list; /* Initialize the protocol and registered fields */ static int h225_tap = -1; @@ -322,8 +322,8 @@ static void h225_frame_end(void) { /* next_tvb pointers are allocated in packet scope, clear it. */ - next_tvb_init(&h245_list); - next_tvb_init(&tp_list); + h245_list = NULL; + tp_list = NULL; } static int @@ -340,8 +340,8 @@ dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * p_add_proto_data(pinfo->pool, pinfo, proto_h225, 0, h225_pi); register_frame_end_routine(pinfo, h225_frame_end); - next_tvb_init(&h245_list); - next_tvb_init(&tp_list); + h245_list = next_tvb_list_new(pinfo->pool); + tp_list = next_tvb_list_new(pinfo->pool); col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME); col_clear(pinfo->cinfo, COL_INFO); @@ -351,13 +351,13 @@ dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * offset = dissect_H323_UserInformation_PDU(tvb, pinfo, tr, NULL); - if (h245_list.count){ + if (h245_list->count){ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/"); col_set_fence(pinfo->cinfo, COL_PROTOCOL); } - next_tvb_call(&h245_list, pinfo, tree, h245dg_handle, data_handle); - next_tvb_call(&tp_list, pinfo, tree, NULL, data_handle); + next_tvb_call(h245_list, pinfo, tree, h245dg_handle, data_handle); + next_tvb_call(tp_list, pinfo, tree, NULL, data_handle); tap_queue_packet(h225_tap, pinfo, h225_pi); diff --git a/epan/dissectors/asn1/snmp/packet-snmp-template.c b/epan/dissectors/asn1/snmp/packet-snmp-template.c index d0df6b3c0a..dd47331c85 100644 --- a/epan/dissectors/asn1/snmp/packet-snmp-template.c +++ b/epan/dissectors/asn1/snmp/packet-snmp-template.c @@ -184,7 +184,7 @@ tvbuff_t *value_tvb=NULL; static dissector_handle_t snmp_handle; static dissector_handle_t data_handle; -static next_tvb_list_t var_list; +static next_tvb_list_t *var_list; static int hf_snmp_response_in = -1; static int hf_snmp_response_to = -1; @@ -1134,7 +1134,7 @@ already_added: if (value_len > 0 && oid_string) { tvbuff_t* sub_tvb = tvb_new_subset_length(tvb, value_offset, value_len); - next_tvb_add_string(&var_list, sub_tvb, (snmp_var_in_tree) ? pt_value : NULL, value_sub_dissectors_table, oid_string); + next_tvb_add_string(var_list, sub_tvb, (snmp_var_in_tree) ? pt_value : NULL, value_sub_dissectors_table, oid_string); } @@ -2071,7 +2071,7 @@ dissect_snmp_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, } } - next_tvb_init(&var_list); + var_list = next_tvb_list_new(pinfo->pool); col_set_str(pinfo->cinfo, COL_PROTOCOL, proto_get_protocol_short_name(find_protocol_by_id(proto))); @@ -2108,7 +2108,7 @@ dissect_snmp_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, next_tvb = tvb_new_subset_remaining(tvb, offset); call_dissector(data_handle, next_tvb, pinfo, tree); } else { - next_tvb_call(&var_list, pinfo, tree, NULL, data_handle); + next_tvb_call(var_list, pinfo, tree, NULL, data_handle); } return offset; @@ -2210,7 +2210,7 @@ dissect_smux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) proto_tree *smux_tree = NULL; proto_item *item = NULL; - next_tvb_init(&var_list); + var_list = next_tvb_list_new(pinfo->pool); col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMUX"); diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c index 4f3558f48c..53af64a257 100644 --- a/epan/dissectors/packet-h225.c +++ b/epan/dissectors/packet-h225.c @@ -107,8 +107,8 @@ static dissector_handle_t h4501_handle=NULL; static dissector_handle_t nsp_handle; static dissector_handle_t tp_handle; -static next_tvb_list_t h245_list; -static next_tvb_list_t tp_list; +static next_tvb_list_t *h245_list; +static next_tvb_list_t *tp_list; /* Initialize the protocol and registered fields */ static int h225_tap = -1; @@ -4131,7 +4131,7 @@ dissect_h225_ParallelH245Control_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ct offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &h245_tvb); - next_tvb_add_handle(&h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); + next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); return offset; @@ -5057,7 +5057,7 @@ dissect_h225_H245Control_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &h245_tvb); - next_tvb_add_handle(&h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); + next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle); return offset; @@ -5114,7 +5114,7 @@ dissect_h225_T_messageContent_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, &next_tvb); - next_tvb_add_handle(&tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle); + next_tvb_add_handle(tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle); return offset; @@ -7903,8 +7903,8 @@ static void h225_frame_end(void) { /* next_tvb pointers are allocated in packet scope, clear it. */ - next_tvb_init(&h245_list); - next_tvb_init(&tp_list); + h245_list = NULL; + tp_list = NULL; } static int @@ -7921,8 +7921,8 @@ dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * p_add_proto_data(pinfo->pool, pinfo, proto_h225, 0, h225_pi); register_frame_end_routine(pinfo, h225_frame_end); - next_tvb_init(&h245_list); - next_tvb_init(&tp_list); + h245_list = next_tvb_list_new(pinfo->pool); + tp_list = next_tvb_list_new(pinfo->pool); col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME); col_clear(pinfo->cinfo, COL_INFO); @@ -7932,13 +7932,13 @@ dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree * offset = dissect_H323_UserInformation_PDU(tvb, pinfo, tr, NULL); - if (h245_list.count){ + if (h245_list->count){ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/"); col_set_fence(pinfo->cinfo, COL_PROTOCOL); } - next_tvb_call(&h245_list, pinfo, tree, h245dg_handle, data_handle); - next_tvb_call(&tp_list, pinfo, tree, NULL, data_handle); + next_tvb_call(h245_list, pinfo, tree, h245dg_handle, data_handle); + next_tvb_call(tp_list, pinfo, tree, NULL, data_handle); tap_queue_packet(h225_tap, pinfo, h225_pi); diff --git a/epan/dissectors/packet-snmp.c b/epan/dissectors/packet-snmp.c index 8f0af78af3..2f0bc657c9 100644 --- a/epan/dissectors/packet-snmp.c +++ b/epan/dissectors/packet-snmp.c @@ -192,7 +192,7 @@ tvbuff_t *value_tvb=NULL; static dissector_handle_t snmp_handle; static dissector_handle_t data_handle; -static next_tvb_list_t var_list; +static next_tvb_list_t *var_list; static int hf_snmp_response_in = -1; static int hf_snmp_response_to = -1; @@ -1236,7 +1236,7 @@ already_added: if (value_len > 0 && oid_string) { tvbuff_t* sub_tvb = tvb_new_subset_length(tvb, value_offset, value_len); - next_tvb_add_string(&var_list, sub_tvb, (snmp_var_in_tree) ? pt_value : NULL, value_sub_dissectors_table, oid_string); + next_tvb_add_string(var_list, sub_tvb, (snmp_var_in_tree) ? pt_value : NULL, value_sub_dissectors_table, oid_string); } @@ -3311,7 +3311,7 @@ dissect_snmp_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, } } - next_tvb_init(&var_list); + var_list = next_tvb_list_new(pinfo->pool); col_set_str(pinfo->cinfo, COL_PROTOCOL, proto_get_protocol_short_name(find_protocol_by_id(proto))); @@ -3348,7 +3348,7 @@ dissect_snmp_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, next_tvb = tvb_new_subset_remaining(tvb, offset); call_dissector(data_handle, next_tvb, pinfo, tree); } else { - next_tvb_call(&var_list, pinfo, tree, NULL, data_handle); + next_tvb_call(var_list, pinfo, tree, NULL, data_handle); } return offset; @@ -3450,7 +3450,7 @@ dissect_smux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) proto_tree *smux_tree = NULL; proto_item *item = NULL; - next_tvb_init(&var_list); + var_list = next_tvb_list_new(pinfo->pool); col_set_str(pinfo->cinfo, COL_PROTOCOL, "SMUX"); diff --git a/epan/next_tvb.c b/epan/next_tvb.c index 113677409a..d0f24ab32a 100644 --- a/epan/next_tvb.c +++ b/epan/next_tvb.c @@ -16,16 +16,16 @@ #include "next_tvb.h" -void next_tvb_init(next_tvb_list_t *list) { - list->first = NULL; - list->last = NULL; - list->count = 0; +next_tvb_list_t* next_tvb_list_new(wmem_allocator_t *pool) { + next_tvb_list_t *list = wmem_new0(pool, next_tvb_list_t); + list->pool = pool; + return list; } void next_tvb_add_handle(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, dissector_handle_t handle) { next_tvb_item_t *item; - item = wmem_new(wmem_packet_scope(), next_tvb_item_t); + item = wmem_new(list->pool, next_tvb_item_t); item->type = NTVB_HANDLE; item->handle = handle; @@ -46,7 +46,7 @@ void next_tvb_add_handle(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, void next_tvb_add_uint(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, dissector_table_t table, guint32 uint_val) { next_tvb_item_t *item; - item = wmem_new(wmem_packet_scope(), next_tvb_item_t); + item = wmem_new(list->pool, next_tvb_item_t); item->type = NTVB_UINT; item->table = table; @@ -68,7 +68,7 @@ void next_tvb_add_uint(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, d void next_tvb_add_string(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, dissector_table_t table, const gchar *string) { next_tvb_item_t *item; - item = wmem_new(wmem_packet_scope(), next_tvb_item_t); + item = wmem_new(list->pool, next_tvb_item_t); item->type = NTVB_STRING; item->table = table; diff --git a/epan/next_tvb.h b/epan/next_tvb.h index f3333cf4c8..fe66e3fed7 100644 --- a/epan/next_tvb.h +++ b/epan/next_tvb.h @@ -44,10 +44,11 @@ typedef struct next_tvb_item { typedef struct { next_tvb_item_t *first; next_tvb_item_t *last; + wmem_allocator_t *pool; int count; } next_tvb_list_t; -WS_DLL_PUBLIC void next_tvb_init(next_tvb_list_t *list); +WS_DLL_PUBLIC next_tvb_list_t* next_tvb_list_new(wmem_allocator_t *pool); WS_DLL_PUBLIC void next_tvb_add_handle(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, dissector_handle_t handle); WS_DLL_PUBLIC void next_tvb_add_uint(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, dissector_table_t table, guint32 uint_val); WS_DLL_PUBLIC void next_tvb_add_string(next_tvb_list_t *list, tvbuff_t *tvb, proto_tree *tree, dissector_table_t table, const gchar *string);