aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2018-04-30 18:47:10 +0200
committerAnders Broman <a.broman58@gmail.com>2018-05-02 04:09:57 +0000
commitf7296644c55504318294fab1bd8ffefc50e86292 (patch)
treeb3bde50b1783c6e3f103137cccabc3c11f2a776f
parent58da452d223c47a9c308b8407d2e0b89f766e568 (diff)
prefs: fix importing some old protocol preferences
Some preference modules did not exist, so importing would not work. While vuze-dht used to have a configurable protocol name, it no longer supports that, so remove it from the list. Add some sanity checks to prevent bug 14316 from going undetected again, and to ensure that dead code is removed when prefs are removed. Change-Id: I5df809af66a6c19f9eb9a6b75d5e60c96008cde4 Fixes: v2.3.0rc0-971-g268841f3e0 ("Combine Decode As and port preferences for tcp.port dissector table.") Reviewed-on: https://code.wireshark.org/review/27227 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/prefs.c41
1 files changed, 29 insertions, 12 deletions
diff --git a/epan/prefs.c b/epan/prefs.c
index 11f9990a7e..c7e8ba808d 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -5048,7 +5048,7 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
struct port_pref_name
{
const char* pref_name;
- const char* module_name;
+ const char* module_name; /* the protocol filter name */
const char* table_name;
guint base;
};
@@ -5077,7 +5077,7 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
{"rsync.tcp_port", "RSYNC", "tcp.port", 10},
{"sametime.tcp_port", "SAMETIME", "tcp.port", 10},
{"sigcomp.tcp.port2", "SIGCOMP", "tcp.port", 10},
- {"synphasor.tcp_port", "SYNCHROPHASOR", "tcp.port", 10},
+ {"synphasor.tcp_port", "synphasor", "tcp.port", 10},
{"tipc.alternate_port", "TIPC", "tcp.port", 10},
{"vnc.alternate_port", "VNC", "tcp.port", 10},
{"scop.port", "SCoP", "tcp.port", 10},
@@ -5087,8 +5087,8 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
{"actrace.udp_port", "ACtrace", "udp.port", 10},
{"brp.port", "BRP", "udp.port", 10},
{"bvlc.additional_udp_port", "BVLC", "udp.port", 10},
- {"capwap.udp.port.control", "CAPWAP-CONTROL", "udp.port", 10},
- {"capwap.udp.port.data", "CAPWAP-CONTROL", "udp.port", 10},
+ {"capwap.udp.port.control", "capwap", "udp.port", 10},
+ {"capwap.udp.port.data", "capwap", "udp.port", 10},
{"coap.udp_port", "CoAP", "udp.port", 10},
{"enttec.udp_port", "ENTTEC", "udp.port", 10},
{"forces.udp_alternate_port", "ForCES", "udp.port", 10},
@@ -5105,16 +5105,15 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
{"rdt.default_udp_port", "RDT", "udp.port", 10},
{"alc.default.udp_port", "ALC", "udp.port", 10},
{"sigcomp.udp.port2", "SIGCOMP", "udp.port", 10},
- {"synphasor.udp_port", "SYNCHROPHASOR", "udp.port", 10},
+ {"synphasor.udp_port", "synphasor", "udp.port", 10},
{"tdmop.udpport", "TDMoP", "udp.port", 10},
{"uaudp.port1", "UAUDP", "udp.port", 10},
{"uaudp.port2", "UAUDP", "udp.port", 10},
{"uaudp.port3", "UAUDP", "udp.port", 10},
{"uaudp.port4", "UAUDP", "udp.port", 10},
{"uhd.dissector_port", "UHD", "udp.port", 10},
- {"vrt.dissector_port", "VITA 49", "udp.port", 10},
- {"vuze-dht.udp_port", "Vuze-DHT", "udp.port", 10},
- {"wimaxasncp.udp.wimax_port", "WiMAX ASN CP", "udp.port", 10},
+ {"vrt.dissector_port", "vrt", "udp.port", 10},
+ {"wimaxasncp.udp.wimax_port", "wimaxasncp", "udp.port", 10},
};
struct port_pref_name port_range_prefs[] = {
@@ -5183,10 +5182,28 @@ deprecated_port_pref(gchar *pref_name, const gchar *value)
module_t *module;
pref_t *pref;
- for (i = 0; i < sizeof(port_prefs)/sizeof(struct port_pref_name); i++)
- {
- if (strcmp(pref_name, port_prefs[i].pref_name) == 0)
- {
+ static gboolean sanity_checked;
+ if (!sanity_checked) {
+ sanity_checked = TRUE;
+ for (i = 0; i < G_N_ELEMENTS(port_prefs); i++) {
+ module = prefs_find_module(port_prefs[i].module_name);
+ if (!module) {
+ ws_g_warning("Deprecated ports pref check - module '%s' not found", port_prefs[i].module_name);
+ continue;
+ }
+ pref = prefs_find_preference(module, port_prefs[i].table_name);
+ if (!pref) {
+ ws_g_warning("Deprecated ports pref '%s.%s' not found", module->name, port_prefs[i].table_name);
+ continue;
+ }
+ if (pref->type != PREF_DECODE_AS_UINT && pref->type != PREF_DECODE_AS_RANGE) {
+ ws_g_warning("Deprecated ports pref '%s.%s' has wrong type: %#x (%s)", module->name, port_prefs[i].table_name, pref->type, prefs_pref_type_name(pref));
+ }
+ }
+ }
+
+ for (i = 0; i < G_N_ELEMENTS(port_prefs); i++) {
+ if (strcmp(pref_name, port_prefs[i].pref_name) == 0) {
/* XXX - give an error if it doesn't fit in a guint? */
uval = (guint)strtoul(value, &p, port_prefs[i].base);
if (p == value || *p != '\0')