aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2016-12-22 15:12:27 -0500
committerMichael Mann <mmann78@netscape.net>2017-01-07 00:44:10 +0000
commit6a6d7ea34f43515dfe3f52aa96b943c272c925a7 (patch)
treedbf89a2226861fa855cc04d80607c56f7268e51b /epan/dissectors
parent29a7fce2720288c86e474f68880a0e61e517027b (diff)
Convert range API to always use wmem memory.
This is mostly to address memory leaks in range preferences (the biggest user of range functionality) on shutdown. Now range preferences must use epan scoped memory when referencing internal preference structures to keep consistency. Change-Id: Idc644f59b5b42fa1d46891542b53ff13ea754157 Reviewed-on: https://code.wireshark.org/review/19387 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/asn1/ansi_map/packet-ansi_map-template.c6
-rw-r--r--epan/dissectors/asn1/camel/packet-camel-template.c6
-rw-r--r--epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c6
-rw-r--r--epan/dissectors/asn1/inap/packet-inap-template.c6
-rw-r--r--epan/dissectors/asn1/pcap/packet-pcap-template.c6
-rw-r--r--epan/dissectors/asn1/tcap/packet-tcap-template.c6
-rw-r--r--epan/dissectors/packet-ansi_map.c6
-rw-r--r--epan/dissectors/packet-camel.c6
-rw-r--r--epan/dissectors/packet-diameter.c6
-rw-r--r--epan/dissectors/packet-gopher.c1
-rw-r--r--epan/dissectors/packet-gsm_map.c6
-rw-r--r--epan/dissectors/packet-h264.c4
-rw-r--r--epan/dissectors/packet-http.c15
-rw-r--r--epan/dissectors/packet-igmp.c4
-rw-r--r--epan/dissectors/packet-inap.c6
-rw-r--r--epan/dissectors/packet-iscsi.c2
-rw-r--r--epan/dissectors/packet-iser.c2
-rw-r--r--epan/dissectors/packet-kafka.c1
-rw-r--r--epan/dissectors/packet-netflow.c12
-rw-r--r--epan/dissectors/packet-nvme-rdma.c2
-rw-r--r--epan/dissectors/packet-opa-fe.c7
-rw-r--r--epan/dissectors/packet-opa-mad.c10
-rw-r--r--epan/dissectors/packet-pcap.c6
-rw-r--r--epan/dissectors/packet-sccp.c13
-rw-r--r--epan/dissectors/packet-sgsap.c6
-rw-r--r--epan/dissectors/packet-tcap.c6
-rw-r--r--epan/dissectors/packet-tds.c1
-rw-r--r--epan/dissectors/packet-tftp.c1
-rw-r--r--epan/dissectors/packet-tpkt.c9
-rw-r--r--epan/dissectors/packet-uaudp.c1
-rw-r--r--epan/dissectors/packet-vnc.c1
-rw-r--r--epan/dissectors/packet-vp8.c4
-rw-r--r--epan/dissectors/packet-xml.c6
33 files changed, 85 insertions, 95 deletions
diff --git a/epan/dissectors/asn1/ansi_map/packet-ansi_map-template.c b/epan/dissectors/asn1/ansi_map/packet-ansi_map-template.c
index 54ef076af1..09947f8c31 100644
--- a/epan/dissectors/asn1/ansi_map/packet-ansi_map-template.c
+++ b/epan/dissectors/asn1/ansi_map/packet-ansi_map-template.c
@@ -4567,10 +4567,10 @@ proto_reg_handoff_ansi_map(void)
else
{
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
}
@@ -5485,7 +5485,7 @@ void proto_register_ansi_map(void) {
ansi_map_tap = register_tap("ansi_map");
- range_convert_str(&global_ssn_range, "5-14", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "5-14", MAX_SSN);
ansi_map_module = prefs_register_protocol(proto_ansi_map, proto_reg_handoff_ansi_map);
diff --git a/epan/dissectors/asn1/camel/packet-camel-template.c b/epan/dissectors/asn1/camel/packet-camel-template.c
index f12a63c4b4..78df8f9bc3 100644
--- a/epan/dissectors/asn1/camel/packet-camel-template.c
+++ b/epan/dissectors/asn1/camel/packet-camel-template.c
@@ -1327,10 +1327,10 @@ void proto_reg_handoff_camel(void) {
#include "packet-camel-dis-tab.c"
} else {
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
@@ -1572,7 +1572,7 @@ void proto_register_camel(void) {
/* Register our configuration options, particularly our SSNs */
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "146", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "146", MAX_SSN);
camel_module = prefs_register_protocol(proto_camel, proto_reg_handoff_camel);
diff --git a/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c b/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c
index bff2990d4e..ce83d1c861 100644
--- a/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c
+++ b/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c
@@ -2749,10 +2749,10 @@ void proto_reg_handoff_gsm_map(void) {
}
else {
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
}
@@ -3153,7 +3153,7 @@ void proto_register_gsm_map(void) {
* Register our configuration options, particularly our ssn:s
* Set default SSNs
*/
- range_convert_str(&global_ssn_range, "6-9", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "6-9", MAX_SSN);
gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);
diff --git a/epan/dissectors/asn1/inap/packet-inap-template.c b/epan/dissectors/asn1/inap/packet-inap-template.c
index 626013fae2..16b7e543f5 100644
--- a/epan/dissectors/asn1/inap/packet-inap-template.c
+++ b/epan/dissectors/asn1/inap/packet-inap-template.c
@@ -185,10 +185,10 @@ void proto_reg_handoff_inap(void) {
}
else {
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
@@ -244,7 +244,7 @@ void proto_register_inap(void) {
register_ber_oid_dissector("0.4.0.1.1.1.0.0", dissect_inap, proto_inap, "cs1-ssp-to-scp");
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "106,241", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "106,241", MAX_SSN);
inap_module = prefs_register_protocol(proto_inap, proto_reg_handoff_inap);
diff --git a/epan/dissectors/asn1/pcap/packet-pcap-template.c b/epan/dissectors/asn1/pcap/packet-pcap-template.c
index 7748a984dd..a3531de7ae 100644
--- a/epan/dissectors/asn1/pcap/packet-pcap-template.c
+++ b/epan/dissectors/asn1/pcap/packet-pcap-template.c
@@ -154,9 +154,9 @@ proto_reg_handoff_pcap(void)
#include "packet-pcap-dis-tab.c"
} else {
dissector_delete_uint_range("sccp.ssn", ssn_range, pcap_handle);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
dissector_add_uint_range("sccp.ssn", ssn_range, pcap_handle);
}
@@ -202,7 +202,7 @@ void proto_register_pcap(void) {
/* Preferences */
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "", MAX_SSN);
prefs_register_range_preference(pcap_module, "ssn", "SCCP SSNs",
"SCCP (and SUA) SSNs to decode as PCAP",
diff --git a/epan/dissectors/asn1/tcap/packet-tcap-template.c b/epan/dissectors/asn1/tcap/packet-tcap-template.c
index e64e57de8e..b67f0f43ab 100644
--- a/epan/dissectors/asn1/tcap/packet-tcap-template.c
+++ b/epan/dissectors/asn1/tcap/packet-tcap-template.c
@@ -2101,7 +2101,7 @@ proto_register_tcap(void)
#endif
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "", MAX_SSN);
prefs_register_range_preference(tcap_module, "ssn", "SCCP SSNs",
"SCCP (and SUA) SSNs to decode as TCAP",
@@ -2154,7 +2154,7 @@ static void range_add_callback(guint32 ssn)
static void init_tcap(void)
{
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
tcapsrt_init_routine();
}
@@ -2162,7 +2162,7 @@ static void init_tcap(void)
static void cleanup_tcap(void)
{
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
static int
diff --git a/epan/dissectors/packet-ansi_map.c b/epan/dissectors/packet-ansi_map.c
index 78002f3501..7903182ddc 100644
--- a/epan/dissectors/packet-ansi_map.c
+++ b/epan/dissectors/packet-ansi_map.c
@@ -16216,10 +16216,10 @@ proto_reg_handoff_ansi_map(void)
else
{
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
}
@@ -19555,7 +19555,7 @@ void proto_register_ansi_map(void) {
ansi_map_tap = register_tap("ansi_map");
- range_convert_str(&global_ssn_range, "5-14", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "5-14", MAX_SSN);
ansi_map_module = prefs_register_protocol(proto_ansi_map, proto_reg_handoff_ansi_map);
diff --git a/epan/dissectors/packet-camel.c b/epan/dissectors/packet-camel.c
index c8644c82b8..c955bd3fb5 100644
--- a/epan/dissectors/packet-camel.c
+++ b/epan/dissectors/packet-camel.c
@@ -8296,10 +8296,10 @@ void proto_reg_handoff_camel(void) {
#line 1328 "./asn1/camel/packet-camel-template.c"
} else {
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
@@ -10691,7 +10691,7 @@ void proto_register_camel(void) {
/* Register our configuration options, particularly our SSNs */
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "146", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "146", MAX_SSN);
camel_module = prefs_register_protocol(proto_camel, proto_reg_handoff_camel);
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c
index 6e8e909b43..de8efcbf44 100644
--- a/epan/dissectors/packet-diameter.c
+++ b/epan/dissectors/packet-diameter.c
@@ -2332,7 +2332,7 @@ proto_register_diameter(void)
diameter_expr_result_vnd_table = register_dissector_table("diameter.vnd_exp_res", "DIAMETER Experimental-Result-Code", proto_diameter, FT_UINT32, BASE_DEC);
/* Set default TCP ports */
- range_convert_str(&global_diameter_sctp_port_range, DEFAULT_DIAMETER_PORT_RANGE, MAX_SCTP_PORT);
+ range_convert_str(wmem_epan_scope(), &global_diameter_sctp_port_range, DEFAULT_DIAMETER_PORT_RANGE, MAX_SCTP_PORT);
/* Register configuration options for ports */
diameter_module = prefs_register_protocol(proto_diameter, proto_reg_handoff_diameter);
@@ -2420,11 +2420,11 @@ proto_reg_handoff_diameter(void)
Initialized=TRUE;
} else {
dissector_delete_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle);
- g_free(diameter_sctp_port_range);
+ wmem_free(wmem_epan_scope(), diameter_sctp_port_range);
}
/* set port for future deletes */
- diameter_sctp_port_range = range_copy(global_diameter_sctp_port_range);
+ diameter_sctp_port_range = range_copy(wmem_epan_scope(), global_diameter_sctp_port_range);
dissector_add_uint_range("sctp.port", diameter_sctp_port_range, diameter_sctp_handle);
exported_pdu_tap = find_tap_id(EXPORT_PDU_TAP_NAME_LAYER_7);
diff --git a/epan/dissectors/packet-gopher.c b/epan/dissectors/packet-gopher.c
index 79003540f1..43e632ad55 100644
--- a/epan/dissectors/packet-gopher.c
+++ b/epan/dissectors/packet-gopher.c
@@ -203,7 +203,6 @@ dissect_gopher(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _
static void
gopher_prefs_apply(void) {
- g_free(gopher_tcp_range);
gopher_tcp_range = prefs_get_range_value("gopher", "tcp.port");
}
diff --git a/epan/dissectors/packet-gsm_map.c b/epan/dissectors/packet-gsm_map.c
index 9f70cd7525..83714dc321 100644
--- a/epan/dissectors/packet-gsm_map.c
+++ b/epan/dissectors/packet-gsm_map.c
@@ -23088,10 +23088,10 @@ void proto_reg_handoff_gsm_map(void) {
}
else {
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
}
@@ -31230,7 +31230,7 @@ void proto_register_gsm_map(void) {
* Register our configuration options, particularly our ssn:s
* Set default SSNs
*/
- range_convert_str(&global_ssn_range, "6-9", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "6-9", MAX_SSN);
gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);
diff --git a/epan/dissectors/packet-h264.c b/epan/dissectors/packet-h264.c
index 1eb3de874f..133c817a7e 100644
--- a/epan/dissectors/packet-h264.c
+++ b/epan/dissectors/packet-h264.c
@@ -3730,10 +3730,10 @@ proto_reg_handoff_h264(void)
h264_prefs_initialized = TRUE;
} else {
range_foreach(dynamic_payload_type_range, range_delete_h264_rtp_pt_callback);
- g_free(dynamic_payload_type_range);
+ wmem_free(wmem_epan_scope(), dynamic_payload_type_range);
}
- dynamic_payload_type_range = range_copy(temp_dynamic_payload_type_range);
+ dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range);
range_foreach(dynamic_payload_type_range, range_add_h264_rtp_pt_callback);
}
diff --git a/epan/dissectors/packet-http.c b/epan/dissectors/packet-http.c
index 4deb3f83f2..64d1133c0e 100644
--- a/epan/dissectors/packet-http.c
+++ b/epan/dissectors/packet-http.c
@@ -3295,17 +3295,16 @@ range_add_http_ssl_callback(guint32 port) {
}
static void reinit_http(void) {
- g_free(http_tcp_range);
http_tcp_range = prefs_get_range_value("http", "tcp.port");
dissector_delete_uint_range("sctp.port", http_sctp_range, http_sctp_handle);
- g_free(http_sctp_range);
- http_sctp_range = range_copy(global_http_sctp_range);
+ wmem_free(wmem_epan_scope(), http_sctp_range);
+ http_sctp_range = range_copy(wmem_epan_scope(), global_http_sctp_range);
dissector_add_uint_range("sctp.port", http_sctp_range, http_sctp_handle);
range_foreach(http_ssl_range, range_delete_http_ssl_callback);
- g_free(http_ssl_range);
- http_ssl_range = range_copy(global_http_ssl_range);
+ wmem_free(wmem_epan_scope(), http_ssl_range);
+ http_ssl_range = range_copy(wmem_epan_scope(), global_http_ssl_range);
range_foreach(http_ssl_range, range_add_http_ssl_callback);
}
@@ -3652,14 +3651,12 @@ proto_register_http(void)
#endif
prefs_register_obsolete_preference(http_module, "tcp_alternate_port");
- range_convert_str(&global_http_sctp_range, SCTP_DEFAULT_RANGE, 65535);
- http_sctp_range = range_empty();
+ range_convert_str(wmem_epan_scope(), &global_http_sctp_range, SCTP_DEFAULT_RANGE, 65535);
prefs_register_range_preference(http_module, "sctp.port", "SCTP Ports",
"SCTP Ports range",
&global_http_sctp_range, 65535);
- range_convert_str(&global_http_ssl_range, SSL_DEFAULT_RANGE, 65535);
- http_ssl_range = range_empty();
+ range_convert_str(wmem_epan_scope(), &global_http_ssl_range, SSL_DEFAULT_RANGE, 65535);
prefs_register_range_preference(http_module, "ssl.port", "SSL/TLS Ports",
"SSL/TLS Ports range",
&global_http_ssl_range, 65535);
diff --git a/epan/dissectors/packet-igmp.c b/epan/dissectors/packet-igmp.c
index 51ca96bdeb..1db84fd413 100644
--- a/epan/dissectors/packet-igmp.c
+++ b/epan/dissectors/packet-igmp.c
@@ -1119,10 +1119,10 @@ proto_reg_handoff_igmp(void)
dissector_add_uint("ip.proto", IP_PROTO_IGMP, igmp_handle);
/* IGMP v0 */
- range_convert_str(&igmpv0_range, "0-15", 15);
+ range_convert_str(NULL, &igmpv0_range, "0-15", 15);
igmpv0_handle = create_dissector_handle(dissect_igmp_v0, proto_igmp);
dissector_add_uint_range("igmp.type", igmpv0_range, igmpv0_handle);
- g_free(igmpv0_range);
+ wmem_free(NULL, igmpv0_range);
/* IGMP v1 */
igmpv1_handle = create_dissector_handle(dissect_igmp_v1, proto_igmp);
diff --git a/epan/dissectors/packet-inap.c b/epan/dissectors/packet-inap.c
index 7bee59f799..2e619c0697 100644
--- a/epan/dissectors/packet-inap.c
+++ b/epan/dissectors/packet-inap.c
@@ -9422,10 +9422,10 @@ void proto_reg_handoff_inap(void) {
}
else {
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
@@ -11967,7 +11967,7 @@ void proto_register_inap(void) {
register_ber_oid_dissector("0.4.0.1.1.1.0.0", dissect_inap, proto_inap, "cs1-ssp-to-scp");
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "106,241", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "106,241", MAX_SSN);
inap_module = prefs_register_protocol(proto_inap, proto_reg_handoff_inap);
diff --git a/epan/dissectors/packet-iscsi.c b/epan/dissectors/packet-iscsi.c
index f5d44d6f53..9d9dcacba3 100644
--- a/epan/dissectors/packet-iscsi.c
+++ b/epan/dissectors/packet-iscsi.c
@@ -3131,7 +3131,7 @@ proto_register_iscsi(void)
10,
&bogus_pdu_data_length_threshold);
- range_convert_str(&global_iscsi_port_range, TCP_PORT_ISCSI_RANGE, MAX_TCP_PORT);
+ range_convert_str(wmem_epan_scope(), &global_iscsi_port_range, TCP_PORT_ISCSI_RANGE, MAX_TCP_PORT);
prefs_register_range_preference(iscsi_module,
"target_ports",
"Target Ports Range",
diff --git a/epan/dissectors/packet-iser.c b/epan/dissectors/packet-iser.c
index f5edbebb7d..9e0f4bb239 100644
--- a/epan/dissectors/packet-iser.c
+++ b/epan/dissectors/packet-iser.c
@@ -348,7 +348,7 @@ proto_register_iser(void)
prefs_register_obsolete_preference(iser_module, "addr_b_id");
prefs_register_obsolete_preference(iser_module, "addr_b_qp");
- range_convert_str(&gPORT_RANGE, TCP_PORT_ISER_RANGE, MAX_TCP_PORT);
+ range_convert_str(wmem_epan_scope(), &gPORT_RANGE, TCP_PORT_ISER_RANGE, MAX_TCP_PORT);
prefs_register_range_preference(iser_module,
"target_ports",
"Target Ports Range",
diff --git a/epan/dissectors/packet-kafka.c b/epan/dissectors/packet-kafka.c
index e85a208e7e..4b2e163895 100644
--- a/epan/dissectors/packet-kafka.c
+++ b/epan/dissectors/packet-kafka.c
@@ -3400,7 +3400,6 @@ dissect_kafka_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static void
apply_kafka_prefs(void) {
- g_free(current_kafka_tcp_range);
current_kafka_tcp_range = prefs_get_range_value("kafka", "tcp.port");
}
diff --git a/epan/dissectors/packet-netflow.c b/epan/dissectors/packet-netflow.c
index 6754882c05..bee1d70cc7 100644
--- a/epan/dissectors/packet-netflow.c
+++ b/epan/dissectors/packet-netflow.c
@@ -12011,8 +12011,8 @@ proto_register_netflow(void)
netflow_module = prefs_register_protocol(proto_netflow, proto_reg_handoff_netflow);
/* Set default Netflow port(s) */
- range_convert_str(&global_netflow_ports, NETFLOW_UDP_PORTS, MAX_UDP_PORT);
- range_convert_str(&global_ipfix_ports, IPFIX_UDP_PORTS, MAX_UDP_PORT);
+ range_convert_str(wmem_epan_scope(), &global_netflow_ports, NETFLOW_UDP_PORTS, MAX_UDP_PORT);
+ range_convert_str(wmem_epan_scope(), &global_ipfix_ports, IPFIX_UDP_PORTS, MAX_UDP_PORT);
prefs_register_obsolete_preference(netflow_module, "udp.port");
@@ -12075,13 +12075,13 @@ proto_reg_handoff_netflow(void)
dissector_add_uint_range_with_preference("tcp.port", IPFIX_UDP_PORTS, netflow_handle);
} else {
dissector_delete_uint_range("udp.port", netflow_ports, netflow_handle);
- g_free(netflow_ports);
+ wmem_free(wmem_epan_scope(), netflow_ports);
range_foreach(ipfix_ports, ipfix_delete_callback);
- g_free(ipfix_ports);
+ wmem_free(wmem_epan_scope(), ipfix_ports);
}
- netflow_ports = range_copy(global_netflow_ports);
- ipfix_ports = range_copy(global_ipfix_ports);
+ netflow_ports = range_copy(wmem_epan_scope(), global_netflow_ports);
+ ipfix_ports = range_copy(wmem_epan_scope(), global_ipfix_ports);
dissector_add_uint_range("udp.port", netflow_ports, netflow_handle);
range_foreach(ipfix_ports, ipfix_add_callback);
diff --git a/epan/dissectors/packet-nvme-rdma.c b/epan/dissectors/packet-nvme-rdma.c
index 5ac99c17c5..d4dbba290c 100644
--- a/epan/dissectors/packet-nvme-rdma.c
+++ b/epan/dissectors/packet-nvme-rdma.c
@@ -1028,7 +1028,7 @@ proto_register_nvme_rdma(void)
//nvme_rdma_module = prefs_register_protocol(proto_nvme_rdma, proto_reg_handoff_nvme_rdma);
nvme_rdma_module = prefs_register_protocol(proto_nvme_rdma, NULL);
- range_convert_str(&gPORT_RANGE, NVME_RDMA_TCP_PORT_RANGE, MAX_TCP_PORT);
+ range_convert_str(wmem_epan_scope(), &gPORT_RANGE, NVME_RDMA_TCP_PORT_RANGE, MAX_TCP_PORT);
prefs_register_range_preference(nvme_rdma_module,
"subsystem_ports",
"Subsystem Ports Range",
diff --git a/epan/dissectors/packet-opa-fe.c b/epan/dissectors/packet-opa-fe.c
index 11ca863f81..b391a8cb44 100644
--- a/epan/dissectors/packet-opa-fe.c
+++ b/epan/dissectors/packet-opa-fe.c
@@ -135,8 +135,7 @@ void proto_register_opa_fe(void)
proto_register_subtree_array(ett, array_length(ett));
opa_fe_module = prefs_register_protocol(proto_opa_fe, proto_reg_handoff_opa_fe);
- range_convert_str(&global_fe_ssl_range, OPA_FE_SSL_RANGE, 65535);
- fe_ssl_range = range_empty();
+ range_convert_str(wmem_epan_scope(), &global_fe_ssl_range, OPA_FE_SSL_RANGE, 65535);
prefs_register_range_preference(opa_fe_module, "ssl.port", "SSL/TLS Ports",
"SSL/TLS Ports range",
&global_fe_ssl_range, 65535);
@@ -154,8 +153,8 @@ void proto_reg_handoff_opa_fe(void)
}
range_foreach(fe_ssl_range, range_delete_fe_ssl_callback);
- g_free(fe_ssl_range);
- fe_ssl_range = range_copy(global_fe_ssl_range);
+ wmem_free(wmem_epan_scope(), fe_ssl_range);
+ fe_ssl_range = range_copy(wmem_epan_scope(), global_fe_ssl_range);
range_foreach(fe_ssl_range, range_add_fe_ssl_callback);
}
diff --git a/epan/dissectors/packet-opa-mad.c b/epan/dissectors/packet-opa-mad.c
index 93d8aa256e..af76c6b653 100644
--- a/epan/dissectors/packet-opa-mad.c
+++ b/epan/dissectors/packet-opa-mad.c
@@ -13493,11 +13493,11 @@ void proto_register_opa_mad(void)
expert_opa_mad = expert_register_protocol(proto_opa_mad);
expert_register_field_array(expert_opa_mad, ei, array_length(ei));
- range_convert_str(&global_mad_vendor_class, OPA_VENDOR_RANGE_STR, 0xFF);
- range_convert_str(&global_mad_vendor_rmpp_class, OPA_VENDOR_RMPP_RANGE_STR, 0xFF);
- range_convert_str(&global_mad_application_class, OPA_APPLICATION_RANGE_STR, 0xFF);
- range_convert_str(&global_mad_reserved_class, OPA_RESERVED_RANGE_STR, 0xFF);
- range_convert_str(&global_mad_opa_class, OPA_MGMTCLASS_RANGE_STR, 0xFF);
+ range_convert_str(wmem_epan_scope(), &global_mad_vendor_class, OPA_VENDOR_RANGE_STR, 0xFF);
+ range_convert_str(wmem_epan_scope(), &global_mad_vendor_rmpp_class, OPA_VENDOR_RMPP_RANGE_STR, 0xFF);
+ range_convert_str(wmem_epan_scope(), &global_mad_application_class, OPA_APPLICATION_RANGE_STR, 0xFF);
+ range_convert_str(wmem_epan_scope(), &global_mad_reserved_class, OPA_RESERVED_RANGE_STR, 0xFF);
+ range_convert_str(wmem_epan_scope(), &global_mad_opa_class, OPA_MGMTCLASS_RANGE_STR, 0xFF);
opa_mad_module = prefs_register_protocol(proto_opa_mad, proto_reg_handoff_opa_mad);
prefs_register_bool_preference(opa_mad_module, "parse_mad_error",
diff --git a/epan/dissectors/packet-pcap.c b/epan/dissectors/packet-pcap.c
index 906d6d5d17..3fdabda8bc 100644
--- a/epan/dissectors/packet-pcap.c
+++ b/epan/dissectors/packet-pcap.c
@@ -13721,9 +13721,9 @@ proto_reg_handoff_pcap(void)
#line 155 "./asn1/pcap/packet-pcap-template.c"
} else {
dissector_delete_uint_range("sccp.ssn", ssn_range, pcap_handle);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
dissector_add_uint_range("sccp.ssn", ssn_range, pcap_handle);
}
@@ -18732,7 +18732,7 @@ void proto_register_pcap(void) {
/* Preferences */
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "", MAX_SSN);
prefs_register_range_preference(pcap_module, "ssn", "SCCP SSNs",
"SCCP (and SUA) SSNs to decode as PCAP",
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c
index fe852b9f1a..4b148a729a 100644
--- a/epan/dissectors/packet-sccp.c
+++ b/epan/dissectors/packet-sccp.c
@@ -3452,17 +3452,20 @@ sccp_users_update_cb(void *r, char **err)
struct _sccp_ul *c;
range_t *empty;
- empty = range_empty();
+ empty = range_empty(NULL);
if (ranges_are_equal(u->called_pc, empty)) {
*err = g_strdup("Must specify a PC");
+ wmem_free(NULL, empty);
return FALSE;
}
if (ranges_are_equal(u->called_ssn, empty)) {
*err = g_strdup("Must specify an SSN");
+ wmem_free(NULL, empty);
return FALSE;
}
+ wmem_free(NULL, empty);
for (c=user_list; c->handlep; c++) {
if (c->id == u->user) {
u->uses_tcap = c->uses_tcap;
@@ -3488,9 +3491,9 @@ sccp_users_copy_cb(void *n, const void *o, size_t siz _U_)
un->handlep = u->handlep;
if (u->called_pc)
- un->called_pc = range_copy(u->called_pc);
+ un->called_pc = range_copy(NULL, u->called_pc);
if (u->called_ssn)
- un->called_ssn = range_copy(u->called_ssn);
+ un->called_ssn = range_copy(NULL, u->called_ssn);
return n;
}
@@ -3499,8 +3502,8 @@ static void
sccp_users_free_cb(void *r)
{
sccp_user_t *u = (sccp_user_t *)r;
- if (u->called_pc) g_free(u->called_pc);
- if (u->called_ssn) g_free(u->called_ssn);
+ if (u->called_pc) wmem_free(NULL, u->called_pc);
+ if (u->called_ssn) wmem_free(NULL, u->called_ssn);
}
diff --git a/epan/dissectors/packet-sgsap.c b/epan/dissectors/packet-sgsap.c
index 0b3e300869..a30786e49f 100644
--- a/epan/dissectors/packet-sgsap.c
+++ b/epan/dissectors/packet-sgsap.c
@@ -1713,7 +1713,7 @@ void proto_register_sgsap(void) {
sgsap_handle = register_dissector(PFNAME, dissect_sgsap, proto_sgsap);
/* Set default SCTP ports */
- range_convert_str(&global_sgsap_port_range, SGSAP_SCTP_PORT_RANGE, MAX_SCTP_PORT);
+ range_convert_str(wmem_epan_scope(), &global_sgsap_port_range, SGSAP_SCTP_PORT_RANGE, MAX_SCTP_PORT);
sgsap_module = prefs_register_protocol(proto_sgsap, proto_reg_handoff_sgsap);
@@ -1740,10 +1740,10 @@ proto_reg_handoff_sgsap(void)
Initialized=TRUE;
} else {
dissector_delete_uint_range("sctp.port", sgsap_port_range, sgsap_handle);
- g_free(sgsap_port_range);
+ wmem_free(wmem_epan_scope(), sgsap_port_range);
}
- sgsap_port_range = range_copy(global_sgsap_port_range);
+ sgsap_port_range = range_copy(wmem_epan_scope(), global_sgsap_port_range);
dissector_add_uint_range("sctp.port", sgsap_port_range, sgsap_handle);
}
diff --git a/epan/dissectors/packet-tcap.c b/epan/dissectors/packet-tcap.c
index fb7c30c72e..3662cff253 100644
--- a/epan/dissectors/packet-tcap.c
+++ b/epan/dissectors/packet-tcap.c
@@ -3686,7 +3686,7 @@ proto_register_tcap(void)
#endif
/* Set default SSNs */
- range_convert_str(&global_ssn_range, "", MAX_SSN);
+ range_convert_str(wmem_epan_scope(), &global_ssn_range, "", MAX_SSN);
prefs_register_range_preference(tcap_module, "ssn", "SCCP SSNs",
"SCCP (and SUA) SSNs to decode as TCAP",
@@ -3739,7 +3739,7 @@ static void range_add_callback(guint32 ssn)
static void init_tcap(void)
{
- ssn_range = range_copy(global_ssn_range);
+ ssn_range = range_copy(wmem_epan_scope(), global_ssn_range);
range_foreach(ssn_range, range_add_callback);
tcapsrt_init_routine();
}
@@ -3747,7 +3747,7 @@ static void init_tcap(void)
static void cleanup_tcap(void)
{
range_foreach(ssn_range, range_delete_callback);
- g_free(ssn_range);
+ wmem_free(wmem_epan_scope(), ssn_range);
}
static int
diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c
index b7797243ce..fee8a0b07b 100644
--- a/epan/dissectors/packet-tds.c
+++ b/epan/dissectors/packet-tds.c
@@ -4216,7 +4216,6 @@ version_convert( gchar *result, guint32 hexver )
static void
apply_tds_prefs(void) {
- g_free(tds_tcp_ports);
tds_tcp_ports = prefs_get_range_value("tds", "tcp.port");
}
diff --git a/epan/dissectors/packet-tftp.c b/epan/dissectors/packet-tftp.c
index 113e3d7edf..a8d9022e59 100644
--- a/epan/dissectors/packet-tftp.c
+++ b/epan/dissectors/packet-tftp.c
@@ -693,7 +693,6 @@ dissect_tftp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
static void
apply_tftp_prefs(void) {
- g_free(global_tftp_port_range);
global_tftp_port_range = prefs_get_range_value("tftp", "udp.port");
}
diff --git a/epan/dissectors/packet-tpkt.c b/epan/dissectors/packet-tpkt.c
index bed73e91ce..937769c175 100644
--- a/epan/dissectors/packet-tpkt.c
+++ b/epan/dissectors/packet-tpkt.c
@@ -659,7 +659,7 @@ proto_register_tpkt(void)
"To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
&tpkt_desegment);
- range_convert_str(&tpkt_tcp_port_range, DEFAULT_TPKT_PORT_RANGE, MAX_TCP_PORT);
+ range_convert_str(wmem_epan_scope(), &tpkt_tcp_port_range, DEFAULT_TPKT_PORT_RANGE, MAX_TCP_PORT);
prefs_register_range_preference(tpkt_module, "tcp.ports", "TPKT TCP ports",
"TCP ports to be decoded as TPKT (default: "
@@ -670,12 +670,15 @@ proto_register_tpkt(void)
void
proto_reg_handoff_tpkt(void)
{
- static range_t *port_range;
+ static range_t *port_range = NULL;
osi_tp_handle = find_dissector("ositp");
dissector_add_uint_range_with_preference("tcp.port", TCP_PORT_TPKT_RANGE, tpkt_handle);
- port_range = range_copy(tpkt_tcp_port_range);
+ dissector_delete_uint_range("tcp.port", port_range, tpkt_handle);
+ wmem_free(wmem_epan_scope(), port_range);
+
+ port_range = range_copy(wmem_epan_scope(), tpkt_tcp_port_range);
dissector_add_uint_range("tcp.port", port_range, tpkt_handle);
/*
diff --git a/epan/dissectors/packet-uaudp.c b/epan/dissectors/packet-uaudp.c
index a1efca078f..af173dff66 100644
--- a/epan/dissectors/packet-uaudp.c
+++ b/epan/dissectors/packet-uaudp.c
@@ -358,7 +358,6 @@ static int dissect_uaudp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, vo
static void
apply_uaudp_prefs(void) {
- g_free(ua_udp_range);
ua_udp_range = prefs_get_range_value("uaudp", "udp.port");
if (*pref_sys_ip_s) {
diff --git a/epan/dissectors/packet-vnc.c b/epan/dissectors/packet-vnc.c
index 8bfd03e115..8570467bc0 100644
--- a/epan/dissectors/packet-vnc.c
+++ b/epan/dissectors/packet-vnc.c
@@ -3460,7 +3460,6 @@ vnc_get_depth(packet_info *pinfo)
/* Preference callbacks */
static void
apply_vnc_prefs(void) {
- g_free(vnc_tcp_range);
vnc_tcp_range = prefs_get_range_value("vnc", "tcp.port");
}
diff --git a/epan/dissectors/packet-vp8.c b/epan/dissectors/packet-vp8.c
index 44c4e87a90..45d19c3123 100644
--- a/epan/dissectors/packet-vp8.c
+++ b/epan/dissectors/packet-vp8.c
@@ -606,10 +606,10 @@ proto_reg_handoff_vp8(void)
vp8_prefs_initialized = TRUE;
} else {
range_foreach(dynamic_payload_type_range, range_delete_vp8_rtp_pt_callback);
- g_free(dynamic_payload_type_range);
+ wmem_free(wmem_epan_scope(), dynamic_payload_type_range);
}
- dynamic_payload_type_range = range_copy(temp_dynamic_payload_type_range);
+ dynamic_payload_type_range = range_copy(wmem_epan_scope(), temp_dynamic_payload_type_range);
range_foreach(dynamic_payload_type_range, range_add_vp8_rtp_pt_callback);
}
diff --git a/epan/dissectors/packet-xml.c b/epan/dissectors/packet-xml.c
index a1876b91e4..bb7a5d7f46 100644
--- a/epan/dissectors/packet-xml.c
+++ b/epan/dissectors/packet-xml.c
@@ -83,8 +83,6 @@ static xml_ns_t *root_ns;
static gboolean pref_heuristic_unicode = FALSE;
-static range_t *xml_tcp_range = NULL;
-
#define XML_CDATA -1000
#define XML_SCOPED_NAME -1001
@@ -1461,10 +1459,6 @@ proto_register_xml(void)
xml_handle = register_dissector("xml", dissect_xml, xml_ns.hf_tag);
init_xml_parser();
-
- xml_tcp_range = range_empty();
-
-
}
static void