aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--epan/addr_resolv.c5
-rw-r--r--epan/decode_as.c2
-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
-rw-r--r--epan/packet.c5
-rw-r--r--epan/packet_range.c6
-rw-r--r--epan/prefs.c26
-rw-r--r--epan/prefs.h2
-rw-r--r--epan/range.c43
-rw-r--r--epan/range.h18
-rw-r--r--epan/uat.c3
-rw-r--r--epan/uat.h2
-rw-r--r--epan/wslua/wslua_dissector.c18
-rw-r--r--epan/wslua/wslua_pref.c2
-rw-r--r--plugins/stats_tree/pinfo_stats_tree.c4
-rw-r--r--plugins/transum/packet-transum.c17
-rw-r--r--ui/gtk/decode_as_dlg.c4
-rw-r--r--ui/gtk/prefs_dlg.c11
-rw-r--r--ui/preference_utils.c18
-rw-r--r--ui/qt/decode_as_dialog.cpp4
-rw-r--r--ui/qt/module_preferences_scroll_area.cpp4
-rw-r--r--ui/qt/preference_editor_frame.cpp14
-rw-r--r--ui/qt/preferences_dialog.cpp8
54 files changed, 189 insertions, 207 deletions
diff --git a/epan/addr_resolv.c b/epan/addr_resolv.c
index dede4efbfc..35df8fc9c8 100644
--- a/epan/addr_resolv.c
+++ b/epan/addr_resolv.c
@@ -526,15 +526,16 @@ parse_service_line (char *line)
return;
}
- if (CVT_NO_ERROR != range_convert_str(&port_rng, port, max_port)) {
+ if (CVT_NO_ERROR != range_convert_str(NULL, &port_rng, port, max_port)) {
/* some assertion here? */
+ wmem_free (NULL, port_rng);
return;
}
cb_service = service;
cb_proto = proto;
range_foreach(port_rng, add_serv_port_cb);
- g_free (port_rng);
+ wmem_free (NULL, port_rng);
cb_proto = PT_NONE;
} /* parse_service_line */
diff --git a/epan/decode_as.c b/epan/decode_as.c
index cf0e74170f..bf93115eea 100644
--- a/epan/decode_as.c
+++ b/epan/decode_as.c
@@ -220,7 +220,7 @@ read_set_decode_as_entries(gchar *key, const gchar *value,
module->prefs_changed = TRUE;
break;
case PREF_DECODE_AS_RANGE:
- range_add_value(pref_value->varp.range, (guint)long_value);
+ range_add_value(wmem_epan_scope(), pref_value->varp.range, (guint)long_value);
module->prefs_changed = TRUE;
break;
default:
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
diff --git a/epan/packet.c b/epan/packet.c
index 56b64e62b8..174814ae72 100644
--- a/epan/packet.c
+++ b/epan/packet.c
@@ -1051,8 +1051,7 @@ void dissector_add_uint_range_with_preference(const char *abbrev, const char* ra
table value would default to 0.
Set up a preference value with that information
*/
- range = wmem_new(wmem_epan_scope(), range_t*);
- *range = range_empty();
+ range = wmem_new0(wmem_epan_scope(), range_t*);
/* If the dissector already has a preference module, use it */
module = prefs_find_module(proto_get_protocol_filter_name(proto_id));
@@ -1089,7 +1088,7 @@ void dissector_add_uint_range_with_preference(const char *abbrev, const char* ra
g_assert_not_reached();
}
- range_convert_str(range, range_str, max_value);
+ range_convert_str(wmem_epan_scope(), range, range_str, max_value);
prefs_register_decode_as_range_preference(module, abbrev, title, description, range, max_value);
}
diff --git a/epan/packet_range.c b/epan/packet_range.c
index c688967af3..a6797e3110 100644
--- a/epan/packet_range.c
+++ b/epan/packet_range.c
@@ -229,7 +229,7 @@ void packet_range_init(packet_range_t *range, capture_file *cf) {
memset(range, 0, sizeof(packet_range_t));
range->process = range_process_all;
- range->user_range = range_empty();
+ range->user_range = NULL;
range->cf = cf;
/* calculate all packet range counters */
@@ -343,11 +343,11 @@ void packet_range_convert_str(packet_range_t *range, const gchar *es)
convert_ret_t ret;
if (range->user_range != NULL)
- g_free(range->user_range);
+ wmem_free(NULL, range->user_range);
g_assert(range->cf != NULL);
- ret = range_convert_str(&new_range, es, range->cf->count);
+ ret = range_convert_str(NULL, &new_range, es, range->cf->count);
if (ret != CVT_NO_ERROR) {
/* range isn't valid */
range->user_range = NULL;
diff --git a/epan/prefs.c b/epan/prefs.c
index 9528d16bf8..aae35b9032 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -264,9 +264,9 @@ free_pref(gpointer data, gpointer user_data _U_)
break;
case PREF_RANGE:
case PREF_DECODE_AS_RANGE:
- g_free(*pref->varp.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
*pref->varp.range = NULL;
- g_free(pref->default_val.range);
+ wmem_free(wmem_epan_scope(), pref->default_val.range);
pref->default_val.range = NULL;
break;
case PREF_CUSTOM:
@@ -1180,9 +1180,9 @@ prefs_register_range_preference_common(module_t *module, const char *name,
* If the value is a null pointer, make it an empty range.
*/
if (*var == NULL)
- *var = range_empty();
+ *var = range_empty(wmem_epan_scope());
preference->varp.range = var;
- preference->default_val.range = range_copy(*var);
+ preference->default_val.range = range_copy(wmem_epan_scope(), *var);
preference->stashed_val.range = NULL;
}
@@ -1204,17 +1204,17 @@ prefs_set_range_value_work(pref_t *pref, const gchar *value,
{
range_t *newrange;
- if (range_convert_str_work(&newrange, value, pref->info.max_value,
+ if (range_convert_str_work(wmem_epan_scope(), &newrange, value, pref->info.max_value,
return_range_errors) != CVT_NO_ERROR) {
return FALSE; /* number was bad */
}
if (!ranges_are_equal(*pref->varp.range, newrange)) {
*changed = TRUE;
- g_free(*pref->varp.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
*pref->varp.range = newrange;
} else {
- g_free(newrange);
+ wmem_free(wmem_epan_scope(), newrange);
}
return TRUE;
}
@@ -3322,8 +3322,8 @@ reset_pref(pref_t *pref)
case PREF_RANGE:
case PREF_DECODE_AS_RANGE:
- g_free(*pref->varp.range);
- *pref->varp.range = range_copy(pref->default_val.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
+ *pref->varp.range = range_copy(wmem_epan_scope(), pref->default_val.range);
break;
case PREF_STATIC_TEXT:
@@ -3835,7 +3835,7 @@ range_t* prefs_get_range_value(const char *module_name, const char* pref_name)
pref_t *pref = prefs_find_preference(prefs_find_module(module_name), pref_name);
g_assert(pref != NULL);
- return range_copy(*pref->varp.range);
+ return *pref->varp.range;
}
/*
@@ -4942,13 +4942,13 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_,
dissector_handle_t handle;
guint32 i, j;
- if (range_convert_str_work(&newrange, value, pref->info.max_value,
+ if (range_convert_str_work(wmem_epan_scope(), &newrange, value, pref->info.max_value,
return_range_errors) != CVT_NO_ERROR) {
return PREFS_SET_SYNTAX_ERR; /* number was bad */
}
if (!ranges_are_equal(*pref->varp.range, newrange)) {
- g_free(*pref->varp.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
*pref->varp.range = newrange;
containing_module->prefs_changed = TRUE;
@@ -4983,7 +4983,7 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_,
}
}
} else {
- g_free(newrange);
+ wmem_free(wmem_epan_scope(), newrange);
}
break;
}
diff --git a/epan/prefs.h b/epan/prefs.h
index 93094c048c..d2b193a243 100644
--- a/epan/prefs.h
+++ b/epan/prefs.h
@@ -641,7 +641,7 @@ prefs_set_pref_e prefs_set_preference_obsolete(pref_t *pref);
WS_DLL_PUBLIC guint prefs_get_uint_value(const char *module_name, const char* pref_name);
/*
- * Get the current range_copy()ed range preference value (so it needs to be freed). This allows the
+ * Get the current range preference value (maintained by pref, so it doesn't need to be freed). This allows the
* preference structure to remain hidden from those that doesn't really need it.
*/
WS_DLL_PUBLIC range_t* prefs_get_range_value(const char *module_name, const char* pref_name);
diff --git a/epan/range.c b/epan/range.c
index 0bce5f9dea..5bcfc60c95 100644
--- a/epan/range.c
+++ b/epan/range.c
@@ -42,11 +42,11 @@
#define RANGE_HDR_SIZE (sizeof (range_t) - sizeof (range_admin_t))
/* Allocate an empty range. */
-range_t *range_empty(void)
+range_t *range_empty(wmem_allocator_t *scope)
{
range_t *range;
- range = (range_t *)g_malloc(RANGE_HDR_SIZE);
+ range = (range_t *)wmem_alloc(scope, RANGE_HDR_SIZE);
range->nranges = 0;
return range;
}
@@ -78,9 +78,9 @@ range_t *range_empty(void)
*/
convert_ret_t
-range_convert_str(range_t **rangep, const gchar *es, guint32 max_value)
+range_convert_str(wmem_allocator_t *scope, range_t **rangep, const gchar *es, guint32 max_value)
{
- return range_convert_str_work(rangep, es, max_value, TRUE);
+ return range_convert_str_work(scope, rangep, es, max_value, TRUE);
}
/* This version of range_convert_str() allows the caller to specify whether
@@ -89,7 +89,7 @@ range_convert_str(range_t **rangep, const gchar *es, guint32 max_value)
* XXX - both the function and the variable could probably use better names.
*/
convert_ret_t
-range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
+range_convert_str_work(wmem_allocator_t *scope, range_t **rangep, const gchar *es, guint32 max_value,
gboolean err_on_max)
{
@@ -106,7 +106,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
return CVT_SYNTAX_ERROR;
/* Allocate a range; this has room for one subrange. */
- range = (range_t *)g_malloc(RANGE_HDR_SIZE + sizeof (range_admin_t));
+ range = (range_t *)wmem_alloc(scope, RANGE_HDR_SIZE + sizeof (range_admin_t));
range->nranges = 0;
nranges = 1;
@@ -137,7 +137,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
nranges = 4;
else
nranges += 4;
- range = (range_t *)g_realloc(range, RANGE_HDR_SIZE +
+ range = (range_t *)wmem_realloc(scope, range, RANGE_HDR_SIZE +
nranges*sizeof (range_admin_t));
}
@@ -150,7 +150,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
val = strtoul(p, &endp, 0);
if (p == endp) {
/* That wasn't a valid number. */
- g_free(range);
+ wmem_free(scope, range);
return CVT_SYNTAX_ERROR;
}
if (errno == ERANGE || val > max_value) {
@@ -158,7 +158,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
* (e.g., except when reading from the preferences file).
*/
if (err_on_max) {
- g_free(range);
+ wmem_free(scope, range);
return CVT_NUMBER_TOO_BIG;
} else {
/* Silently use the range's maximum value */
@@ -173,7 +173,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
p++;
} else {
/* Neither empty nor a number. */
- g_free(range);
+ wmem_free(scope, range);
return CVT_SYNTAX_ERROR;
}
@@ -196,7 +196,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
val = strtoul(p, &endp, 0);
if (p == endp) {
/* That wasn't a valid number. */
- g_free(range);
+ wmem_free(scope, range);
return CVT_SYNTAX_ERROR;
}
if (errno == ERANGE || val > max_value) {
@@ -204,7 +204,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
* (e.g., except when reading from the preferences file).
*/
if (err_on_max) {
- g_free(range);
+ wmem_free(scope, range);
return CVT_NUMBER_TOO_BIG;
} else {
/* Silently use the range's maximum value */
@@ -219,7 +219,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
p++;
} else {
/* Neither empty nor a number. */
- g_free(range);
+ wmem_free(scope, range);
return CVT_SYNTAX_ERROR;
}
} else if (c == ',' || c == '\0') {
@@ -229,7 +229,7 @@ range_convert_str_work(range_t **rangep, const gchar *es, guint32 max_value,
range->ranges[range->nranges].high = range->ranges[range->nranges].low;
} else {
/* Invalid character. */
- g_free(range);
+ wmem_free(scope, range);
return CVT_SYNTAX_ERROR;
}
range->nranges++;
@@ -284,7 +284,7 @@ value_is_in_range(range_t *range, guint32 val)
* a range. This may extend an existing range or create a new one
*/
gboolean
-range_add_value(range_t **range, guint32 val)
+range_add_value(wmem_allocator_t *scope, range_t **range, guint32 val)
{
guint i;
@@ -308,7 +308,7 @@ range_add_value(range_t **range, guint32 val)
}
}
- (*range) = (range_t *)g_realloc((*range), RANGE_HDR_SIZE +
+ (*range) = (range_t *)wmem_realloc(scope, (*range), RANGE_HDR_SIZE +
((*range)->nranges+1)*sizeof (range_admin_t));
(*range)->nranges++;
(*range)->ranges[i].low = (*range)->ranges[i].high = val;
@@ -321,7 +321,7 @@ range_add_value(range_t **range, guint32 val)
* a range. This may delete an existing range
*/
gboolean
-range_remove_value(range_t **range, guint32 val)
+range_remove_value(wmem_allocator_t *scope, range_t **range, guint32 val)
{
guint i, j, new_j;
range_t *new_range;
@@ -336,7 +336,7 @@ range_remove_value(range_t **range, guint32 val)
if ((val == (*range)->ranges[i].low) && (val == (*range)->ranges[i].high))
{
/* Remove the range item entirely */
- new_range = (range_t*)g_malloc(RANGE_HDR_SIZE + ((*range)->nranges-1)*sizeof (range_admin_t));
+ new_range = (range_t*)wmem_alloc(scope, RANGE_HDR_SIZE + ((*range)->nranges-1)*sizeof (range_admin_t));
new_range->nranges = (*range)->nranges-1;
for (j=0, new_j = 0; j < (*range)->nranges; j++) {
@@ -349,7 +349,7 @@ range_remove_value(range_t **range, guint32 val)
new_j++;
}
- g_free(*range);
+ wmem_free(scope, *range);
*range = new_range;
return TRUE;
}
@@ -439,7 +439,7 @@ range_convert_range(wmem_allocator_t *scope, const range_t *range)
/* Create a copy of a range. */
range_t *
-range_copy(range_t *src)
+range_copy(wmem_allocator_t *scope, range_t *src)
{
range_t *dst;
size_t range_size;
@@ -448,8 +448,7 @@ range_copy(range_t *src)
return NULL;
range_size = RANGE_HDR_SIZE + src->nranges*sizeof (range_admin_t);
- dst = (range_t *)g_malloc(range_size);
- memcpy(dst, src, range_size);
+ dst = (range_t *)wmem_memdup(scope, src, range_size);
return dst;
}
diff --git a/epan/range.h b/epan/range.h
index b59119e3ae..c37586bd6e 100644
--- a/epan/range.h
+++ b/epan/range.h
@@ -64,7 +64,7 @@ typedef enum {
CVT_NUMBER_TOO_BIG
} convert_ret_t;
-WS_DLL_PUBLIC range_t *range_empty(void);
+WS_DLL_PUBLIC range_t *range_empty(wmem_allocator_t *scope);
/*** Converts a range string to a fast comparable array of ranges.
@@ -84,15 +84,16 @@ WS_DLL_PUBLIC range_t *range_empty(void);
* 20,30,40- 20, 30, and the range from 40 to the end
* 20-10,30-25 Range from 10 to 20, and from 25 to 30
* - All values
+ * @param scope memory scope for the range
* @param range the range
* @param es points to the string to be converted.
* @param max_value specifies the maximum value in a range.
* @return convert_ret_t
*/
-WS_DLL_PUBLIC convert_ret_t range_convert_str(range_t **range, const gchar *es,
+WS_DLL_PUBLIC convert_ret_t range_convert_str(wmem_allocator_t *scope, range_t **range, const gchar *es,
guint32 max_value);
-WS_DLL_PUBLIC convert_ret_t range_convert_str_work(range_t **range, const gchar *es,
+WS_DLL_PUBLIC convert_ret_t range_convert_str_work(wmem_allocator_t *scope, range_t **range, const gchar *es,
guint32 max_value, gboolean err_on_max);
/** This function returns TRUE if a given value is within one of the ranges
@@ -105,19 +106,21 @@ WS_DLL_PUBLIC gboolean value_is_in_range(range_t *range, guint32 val);
/** This function returns TRUE if val has successfully been added to
* a range. This may extend an existing range or create a new one
+ * @param scope memory scope of range (in case of reallocation)
* @param range to add value
* @param val value to add to range
* @return TRUE if the value is successsfully added to range
*/
-WS_DLL_PUBLIC gboolean range_add_value(range_t **range, guint32 val);
+WS_DLL_PUBLIC gboolean range_add_value(wmem_allocator_t *scope, range_t **range, guint32 val);
/** This function returns TRUE if val has successfully been removed from
* a range. This may remove an existing range.
+ * @param scope memory scope of range (in case of reallocation)
* @param range to remove value
* @param val value to remove within range
* @return TRUE if the value is successsfully removed to range
*/
-WS_DLL_PUBLIC gboolean range_remove_value(range_t **range, guint32 val);
+WS_DLL_PUBLIC gboolean range_remove_value(wmem_allocator_t *scope, range_t **range, guint32 val);
/** This function returns TRUE if the two given range_t's are equal.
* @param a first range
@@ -139,11 +142,12 @@ WS_DLL_PUBLIC void range_foreach(range_t *range, void (*callback)(guint32 val));
WS_DLL_PUBLIC char *range_convert_range(wmem_allocator_t *scope, const range_t *range);
/**
- * Create a copy of a range.
+ * Create a (wmem-alloc()ed) copy of a range
+ * @param scope memory scope for the copied range
* @param src the range to copy
* @return ep allocated copy of the range
*/
-WS_DLL_PUBLIC range_t *range_copy(range_t *src);
+WS_DLL_PUBLIC range_t *range_copy(wmem_allocator_t *scope, range_t *src);
#ifdef __cplusplus
}
diff --git a/epan/uat.c b/epan/uat.c
index 461dee63d5..b3b0f10e9a 100644
--- a/epan/uat.c
+++ b/epan/uat.c
@@ -611,7 +611,7 @@ gboolean uat_fld_chk_enum(void* u1 _U_, const char* strptr, guint len, const voi
gboolean uat_fld_chk_range(void* u1 _U_, const char* strptr, guint len, const void* v _U_, const void* u3, char** err) {
char* str = g_strndup(strptr,len);
range_t* r = NULL;
- convert_ret_t ret = range_convert_str(&r, str,GPOINTER_TO_UINT(u3));
+ convert_ret_t ret = range_convert_str(NULL, &r, str,GPOINTER_TO_UINT(u3));
gboolean ret_value = FALSE;
switch ( ret ) {
@@ -634,6 +634,7 @@ gboolean uat_fld_chk_range(void* u1 _U_, const char* strptr, guint len, const vo
}
g_free(str);
+ wmem_free(NULL, r);
return ret_value;
}
diff --git a/epan/uat.h b/epan/uat.h
index b9829cef73..94581488fc 100644
--- a/epan/uat.h
+++ b/epan/uat.h
@@ -599,7 +599,7 @@ static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr,
#define UAT_RANGE_CB_DEF(basename,field_name,rec_t) \
static void basename ## _ ## field_name ## _set_cb(void* rec, const char* buf, guint len, const void* UNUSED_PARAMETER(u1), const void* u2) {\
char* rng = g_strndup(buf,len);\
- range_convert_str(&(((rec_t*)rec)->field_name), rng,GPOINTER_TO_UINT(u2)); \
+ range_convert_str(NULL, &(((rec_t*)rec)->field_name), rng,GPOINTER_TO_UINT(u2)); \
g_free(rng); \
} \
static void basename ## _ ## field_name ## _tostr_cb(void* rec, char** out_ptr, unsigned* out_len, const void* UNUSED_PARAMETER(u1), const void* UNUSED_PARAMETER(u2)) {\
diff --git a/epan/wslua/wslua_dissector.c b/epan/wslua/wslua_dissector.c
index d6aac98add..b365c7e6d6 100644
--- a/epan/wslua/wslua_dissector.c
+++ b/epan/wslua/wslua_dissector.c
@@ -354,14 +354,14 @@ WSLUA_METHOD DissectorTable_add (lua_State *L) {
/* Not a number, try as range */
const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_add_PATTERN);
range_t *range = NULL;
- if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) {
+ if (range_convert_str(NULL, &range, pattern, G_MAXUINT32) == CVT_NO_ERROR) {
dissector_add_uint_range(dt->name, range, handle);
} else {
- g_free (range);
+ wmem_free (NULL, range);
WSLUA_ARG_ERROR(DissectorTable_add,PATTERN,"invalid integer or range");
return 0;
}
- g_free (range);
+ wmem_free (NULL, range);
}
} else {
luaL_error(L,"Strange type %d for a DissectorTable",type);
@@ -417,15 +417,15 @@ WSLUA_METHOD DissectorTable_set (lua_State *L) {
/* Not a number, try as range */
const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_set_PATTERN);
range_t *range = NULL;
- if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR) {
+ if (range_convert_str(NULL, &range, pattern, G_MAXUINT32) == CVT_NO_ERROR) {
dissector_delete_all(dt->name, handle);
dissector_add_uint_range(dt->name, range, handle);
} else {
- g_free (range);
+ wmem_free (NULL, range);
WSLUA_ARG_ERROR(DissectorTable_set,PATTERN,"invalid integer or range");
return 0;
}
- g_free (range);
+ wmem_free (NULL, range);
}
} else {
luaL_error(L,"Strange type %d for a DissectorTable",type);
@@ -472,14 +472,14 @@ WSLUA_METHOD DissectorTable_remove (lua_State *L) {
/* Not a number, try as range */
const gchar* pattern = luaL_checkstring(L,WSLUA_ARG_DissectorTable_remove_PATTERN);
range_t *range = NULL;
- if (range_convert_str(&range, pattern, G_MAXUINT32) == CVT_NO_ERROR)
+ if (range_convert_str(NULL, &range, pattern, G_MAXUINT32) == CVT_NO_ERROR)
dissector_delete_uint_range(dt->name, range, handle);
else {
- g_free (range);
+ wmem_free (NULL, range);
WSLUA_ARG_ERROR(DissectorTable_remove,PATTERN,"invalid integer or range");
return 0;
}
- g_free (range);
+ wmem_free (NULL, range);
}
}
diff --git a/epan/wslua/wslua_pref.c b/epan/wslua/wslua_pref.c
index 74b28f4797..51f195fff8 100644
--- a/epan/wslua/wslua_pref.c
+++ b/epan/wslua/wslua_pref.c
@@ -235,7 +235,7 @@ static range_t* get_range(lua_State *L, int idx_r, int idx_m)
static range_t *ret = NULL;
const gchar *pattern = luaL_checkstring(L, idx_r);
- switch (range_convert_str(&ret, pattern, wslua_togint32(L, idx_m))) {
+ switch (range_convert_str(wmem_epan_scope(), &ret, pattern, wslua_togint32(L, idx_m))) {
case CVT_NO_ERROR:
break;
case CVT_SYNTAX_ERROR:
diff --git a/plugins/stats_tree/pinfo_stats_tree.c b/plugins/stats_tree/pinfo_stats_tree.c
index c1ce818083..b8eb54b7c1 100644
--- a/plugins/stats_tree/pinfo_stats_tree.c
+++ b/plugins/stats_tree/pinfo_stats_tree.c
@@ -60,7 +60,7 @@ static void *uat_plen_record_copy_cb(void *n, const void *o, size_t siz _U_) {
uat_plen_record_t *rn = (uat_plen_record_t *)n;
if (r->packet_range)
- rn->packet_range = range_copy(r->packet_range);
+ rn->packet_range = range_copy(NULL, r->packet_range);
return n;
}
@@ -82,7 +82,7 @@ static void uat_plen_record_free_cb(void*r) {
uat_plen_record_t *record = (uat_plen_record_t*)r;
if (record->packet_range)
- g_free(record->packet_range);
+ wmem_free(NULL, record->packet_range);
}
static void uat_plen_record_post_update_cb(void) {
diff --git a/plugins/transum/packet-transum.c b/plugins/transum/packet-transum.c
index 08e5169471..18f2ab25e5 100644
--- a/plugins/transum/packet-transum.c
+++ b/plugins/transum/packet-transum.c
@@ -1128,21 +1128,8 @@ proto_register_transum(void)
preferences.capture_position = TRACE_CAP_CLIENT;
preferences.reassembly = TRUE;
- tcp_svc_port_range_values = (range_t *)g_malloc((sizeof(guint) + (4 * sizeof(range_admin_t))));
- tcp_svc_port_range_values->nranges = 4;
- tcp_svc_port_range_values->ranges[0].low = 25;
- tcp_svc_port_range_values->ranges[0].high = 25;
- tcp_svc_port_range_values->ranges[1].low = 80;
- tcp_svc_port_range_values->ranges[1].high = 80;
- tcp_svc_port_range_values->ranges[2].low = 443;
- tcp_svc_port_range_values->ranges[2].high = 443;
- tcp_svc_port_range_values->ranges[3].low = 1433;
- tcp_svc_port_range_values->ranges[3].high = 1433;
-
- udp_svc_port_range_values = (range_t *)g_malloc((sizeof(guint) + (1 * sizeof(range_admin_t))));
- udp_svc_port_range_values->nranges = 1;
- udp_svc_port_range_values->ranges[0].low = 137;
- udp_svc_port_range_values->ranges[0].high = 139;
+ range_convert_str(wmem_epan_scope(), &tcp_svc_port_range_values, "25, 80, 443, 1433", MAX_TCP_PORT);
+ range_convert_str(wmem_epan_scope(), &udp_svc_port_range_values, "137-139", MAX_UDP_PORT);
preferences.orphan_ka_discard = FALSE;
preferences.time_multiplier = RTE_TIME_SEC;
diff --git a/ui/gtk/decode_as_dlg.c b/ui/gtk/decode_as_dlg.c
index 1d9d14780e..4ef7220f90 100644
--- a/ui/gtk/decode_as_dlg.c
+++ b/ui/gtk/decode_as_dlg.c
@@ -708,7 +708,7 @@ decode_simple (GtkWidget *notebook_pg)
*pref_value->varp.uint = pref_value->default_val.uint;
break;
case PREF_DECODE_AS_RANGE:
- range_remove_value(pref_value->varp.range, GPOINTER_TO_UINT(value_ptr));
+ range_remove_value(wmem_epan_scope(), pref_value->varp.range, GPOINTER_TO_UINT(value_ptr));
break;
default:
break;
@@ -734,7 +734,7 @@ decode_simple (GtkWidget *notebook_pg)
*pref_value->varp.uint = GPOINTER_TO_UINT(value_ptr);
break;
case PREF_DECODE_AS_RANGE:
- range_add_value(pref_value->varp.range, GPOINTER_TO_UINT(value_ptr));
+ range_add_value(wmem_epan_scope(), pref_value->varp.range, GPOINTER_TO_UINT(value_ptr));
break;
default:
break;
diff --git a/ui/gtk/prefs_dlg.c b/ui/gtk/prefs_dlg.c
index 12ce7c3c37..ecd1b25427 100644
--- a/ui/gtk/prefs_dlg.c
+++ b/ui/gtk/prefs_dlg.c
@@ -999,11 +999,12 @@ pref_check(pref_t *pref, gpointer user_data)
if (strlen(str_val) != 0) {
range_t *newrange;
- if (range_convert_str(&newrange, str_val, pref->info.max_value) != CVT_NO_ERROR) {
+ if (range_convert_str(NULL, &newrange, str_val, pref->info.max_value) != CVT_NO_ERROR) {
*badpref = pref;
+ wmem_free(NULL, newrange);
return PREFS_SET_SYNTAX_ERR; /* range was bad */
}
- g_free(newrange);
+ wmem_free(NULL, newrange);
}
break;
@@ -1125,7 +1126,7 @@ pref_fetch(pref_t *pref, gpointer user_data)
str_val = gtk_entry_get_text(GTK_ENTRY(pref->control));
- if (range_convert_str_work(&newrange, str_val, pref->info.max_value, TRUE) != CVT_NO_ERROR) {
+ if (range_convert_str_work(wmem_epan_scope(), &newrange, str_val, pref->info.max_value, TRUE) != CVT_NO_ERROR) {
#if 0
return PREFS_SET_SYNTAX_ERR; /* range was bad */
#else
@@ -1136,7 +1137,7 @@ pref_fetch(pref_t *pref, gpointer user_data)
if (!ranges_are_equal(*pref->varp.range, newrange)) {
guint32 i, j;
- g_free(*pref->varp.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
*pref->varp.range = newrange;
module->prefs_changed = TRUE;
@@ -1170,7 +1171,7 @@ pref_fetch(pref_t *pref, gpointer user_data)
}
} else {
- g_free(newrange);
+ wmem_free(wmem_epan_scope(), newrange);
}
break;
diff --git a/ui/preference_utils.c b/ui/preference_utils.c
index 63fc756410..a9cfac2f05 100644
--- a/ui/preference_utils.c
+++ b/ui/preference_utils.c
@@ -70,8 +70,8 @@ pref_stash(pref_t *pref, gpointer unused _U_)
case PREF_DECODE_AS_RANGE:
case PREF_RANGE:
- g_free(pref->stashed_val.range);
- pref->stashed_val.range = range_copy(*pref->varp.range);
+ wmem_free(wmem_epan_scope(), pref->stashed_val.range);
+ pref->stashed_val.range = range_copy(wmem_epan_scope(), *pref->varp.range);
break;
case PREF_COLOR:
@@ -179,8 +179,8 @@ pref_unstash(pref_t *pref, gpointer unstash_data_p)
}
}
- g_free(*pref->varp.range);
- *pref->varp.range = range_copy(pref->stashed_val.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
+ *pref->varp.range = range_copy(wmem_epan_scope(), pref->stashed_val.range);
if (unstash_data->handle_decode_as) {
if ((sub_dissectors != NULL) && (handle != NULL)) {
@@ -204,8 +204,8 @@ pref_unstash(pref_t *pref, gpointer unstash_data_p)
case PREF_RANGE:
if (!ranges_are_equal(*pref->varp.range, pref->stashed_val.range)) {
unstash_data->module->prefs_changed = TRUE;
- g_free(*pref->varp.range);
- *pref->varp.range = range_copy(pref->stashed_val.range);
+ wmem_free(wmem_epan_scope(), *pref->varp.range);
+ *pref->varp.range = range_copy(wmem_epan_scope(), pref->stashed_val.range);
}
break;
@@ -254,8 +254,8 @@ reset_stashed_pref(pref_t *pref) {
case PREF_DECODE_AS_RANGE:
case PREF_RANGE:
- g_free(pref->stashed_val.range);
- pref->stashed_val.range = range_copy(pref->default_val.range);
+ wmem_free(wmem_epan_scope(), pref->stashed_val.range);
+ pref->stashed_val.range = range_copy(wmem_epan_scope(), pref->default_val.range);
break;
case PREF_COLOR:
@@ -300,7 +300,7 @@ pref_clean_stash(pref_t *pref, gpointer unused _U_)
case PREF_DECODE_AS_RANGE:
case PREF_RANGE:
if (pref->stashed_val.range != NULL) {
- g_free(pref->stashed_val.range);
+ wmem_free(wmem_epan_scope(), pref->stashed_val.range);
pref->stashed_val.range = NULL;
}
break;
diff --git a/ui/qt/decode_as_dialog.cpp b/ui/qt/decode_as_dialog.cpp
index 139914076b..c7d0c04935 100644
--- a/ui/qt/decode_as_dialog.cpp
+++ b/ui/qt/decode_as_dialog.cpp
@@ -642,7 +642,7 @@ void DecodeAsDialog::applyChanges()
*pref_value->varp.uint = pref_value->default_val.uint;
break;
case PREF_DECODE_AS_RANGE:
- range_remove_value(pref_value->varp.range, GPOINTER_TO_UINT(selector_value));
+ range_remove_value(wmem_epan_scope(), pref_value->varp.range, GPOINTER_TO_UINT(selector_value));
break;
default:
break;
@@ -670,7 +670,7 @@ void DecodeAsDialog::applyChanges()
*pref_value->varp.uint = GPOINTER_TO_UINT(selector_value);
break;
case PREF_DECODE_AS_RANGE:
- range_add_value(pref_value->varp.range, GPOINTER_TO_UINT(selector_value));
+ range_add_value(wmem_epan_scope(), pref_value->varp.range, GPOINTER_TO_UINT(selector_value));
break;
default:
break;
diff --git a/ui/qt/module_preferences_scroll_area.cpp b/ui/qt/module_preferences_scroll_area.cpp
index 74dc2bd40c..e11e84a0b9 100644
--- a/ui/qt/module_preferences_scroll_area.cpp
+++ b/ui/qt/module_preferences_scroll_area.cpp
@@ -458,10 +458,10 @@ void ModulePreferencesScrollArea::rangeSyntaxLineEditTextEdited(const QString &n
if (!pref) return;
range_t *newrange;
- convert_ret_t ret = range_convert_str(&newrange, new_str.toUtf8().constData(), pref->info.max_value);
+ convert_ret_t ret = range_convert_str(wmem_epan_scope(), &newrange, new_str.toUtf8().constData(), pref->info.max_value);
if (ret == CVT_NO_ERROR) {
- g_free(pref->stashed_val.range);
+ wmem_free(wmem_epan_scope(), pref->stashed_val.range);
pref->stashed_val.range = newrange;
if (new_str.isEmpty()) {
diff --git a/ui/qt/preference_editor_frame.cpp b/ui/qt/preference_editor_frame.cpp
index c9a2f5c52f..845920680e 100644
--- a/ui/qt/preference_editor_frame.cpp
+++ b/ui/qt/preference_editor_frame.cpp
@@ -108,8 +108,8 @@ void PreferenceEditorFrame::editPreference(preference *pref, pref_module *module
show = true;
break;
case PREF_RANGE:
- g_free(new_range_);
- new_range_ = range_copy(pref->stashed_val.range);
+ wmem_free(NULL, new_range_);
+ new_range_ = range_copy(NULL, pref->stashed_val.range);
connect(ui->preferenceLineEdit, SIGNAL(textEdited(QString)),
this, SLOT(rangeLineEditTextEdited(QString)));
show = true;
@@ -154,8 +154,8 @@ void PreferenceEditorFrame::rangeLineEditTextEdited(const QString &new_str)
{
range_t *new_range = NULL;
- convert_ret_t ret = range_convert_str(&new_range, new_str.toUtf8().constData(), pref_->info.max_value);
- g_free(new_range_);
+ convert_ret_t ret = range_convert_str(NULL, &new_range, new_str.toUtf8().constData(), pref_->info.max_value);
+ wmem_free(NULL, new_range_);
new_range_ = new_range;
if (ret == CVT_NO_ERROR) {
@@ -204,8 +204,8 @@ void PreferenceEditorFrame::on_buttonBox_accepted()
break;
case PREF_RANGE:
if (!ranges_are_equal(pref_->stashed_val.range, new_range_)) {
- g_free(pref_->stashed_val.range);
- pref_->stashed_val.range = range_copy(new_range_);
+ wmem_free(wmem_epan_scope(), pref_->stashed_val.range);
+ pref_->stashed_val.range = range_copy(wmem_epan_scope(), new_range_);
apply = true;
}
break;
@@ -245,7 +245,7 @@ void PreferenceEditorFrame::on_buttonBox_rejected()
{
pref_ = NULL;
module_ = NULL;
- g_free(new_range_);
+ wmem_free(NULL, new_range_);
new_range_ = NULL;
ui->preferenceLineEdit->clear();
animatedHide();
diff --git a/ui/qt/preferences_dialog.cpp b/ui/qt/preferences_dialog.cpp
index 34a7ade73a..f8f521d4cd 100644
--- a/ui/qt/preferences_dialog.cpp
+++ b/ui/qt/preferences_dialog.cpp
@@ -895,14 +895,14 @@ void PreferencesDialog::rangePrefTextChanged(const QString &text)
syntax_edit->setSyntaxState(SyntaxLineEdit::Empty);
} else {
range_t *newrange;
- convert_ret_t ret = range_convert_str(&newrange, text.toUtf8().constData(), pref->info.max_value);
+ convert_ret_t ret = range_convert_str(NULL, &newrange, text.toUtf8().constData(), pref->info.max_value);
if (ret == CVT_NO_ERROR) {
syntax_edit->setSyntaxState(SyntaxLineEdit::Valid);
- g_free(newrange);
} else {
syntax_edit->setSyntaxState(SyntaxLineEdit::Invalid);
}
+ wmem_free(NULL, newrange);
}
}
@@ -916,10 +916,10 @@ void PreferencesDialog::rangePrefEditingFinished()
if (!pref) return;
range_t *newrange;
- convert_ret_t ret = range_convert_str(&newrange, syntax_edit->text().toUtf8().constData(), pref->info.max_value);
+ convert_ret_t ret = range_convert_str(wmem_epan_scope(), &newrange, syntax_edit->text().toUtf8().constData(), pref->info.max_value);
if (ret == CVT_NO_ERROR) {
- g_free(pref->stashed_val.range);
+ wmem_free(wmem_epan_scope(), pref->stashed_val.range);
pref->stashed_val.range = newrange;
}
pd_ui_->advancedTree->removeItemWidget(adv_ti, 3);