diff options
Diffstat (limited to 'epan')
45 files changed, 153 insertions, 159 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: |