aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-portmap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2015-07-18 23:23:32 -0700
committerGuy Harris <guy@alum.mit.edu>2015-07-19 06:24:18 +0000
commit7e817aeb3a3cee7c3eb3e7685ab0ccf98a00411b (patch)
treef78ac4b87035ce2db1c46386be5955e26412bf75 /epan/dissectors/packet-portmap.c
parent75d4fa299da240d5598b963602fa3b0c1d133dcb (diff)
Require dissectors for all ONC RPC calls and replies.
Either there's a known body for the call or reply, in which case we already have a dissector for it, or the body is empty, in which case we now have dissect_rpc_void() to dissect it, or the body is unknown or nobody's bothered writing it, in which case we use dissect_rpc_unknown() for now. This means that an attempt to look up the dissector for a known procedure will always succeed, so we can label it with the name rather than with "proc-N". It also means that we distinguish between "it's void" and "it's unknown", so that unknown values will get flagged as such. Change-Id: I748580c1dca61d1f0972396db1a3b0885fc0a541 Reviewed-on: https://code.wireshark.org/review/9699 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/dissectors/packet-portmap.c')
-rw-r--r--epan/dissectors/packet-portmap.c51
1 files changed, 25 insertions, 26 deletions
diff --git a/epan/dissectors/packet-portmap.c b/epan/dissectors/packet-portmap.c
index ede71e2729..c7fa17778f 100644
--- a/epan/dissectors/packet-portmap.c
+++ b/epan/dissectors/packet-portmap.c
@@ -334,14 +334,13 @@ dissect_callit_reply(tvbuff_t *tvb, packet_info *pinfo,
}
/* proc number, "proc name", dissect_request, dissect_reply */
-/* NULL as function pointer means: type of arguments is "void". */
static const vsff portmap1_proc[] = {
- { PORTMAPPROC_NULL, "NULL", NULL, NULL },
- { PORTMAPPROC_SET, "SET", NULL, NULL },
- { PORTMAPPROC_UNSET, "UNSET", NULL, NULL },
- { PORTMAPPROC_GETPORT, "GETPORT", NULL, NULL },
- { PORTMAPPROC_DUMP, "DUMP", NULL, NULL },
- { PORTMAPPROC_CALLIT, "CALLIT", NULL, NULL },
+ { PORTMAPPROC_NULL, "NULL", dissect_rpc_void, dissect_rpc_void },
+ { PORTMAPPROC_SET, "SET", dissect_rpc_unknown, dissect_rpc_unknown },
+ { PORTMAPPROC_UNSET, "UNSET", dissect_rpc_unknown, dissect_rpc_unknown },
+ { PORTMAPPROC_GETPORT, "GETPORT", dissect_rpc_unknown, dissect_rpc_unknown },
+ { PORTMAPPROC_DUMP, "DUMP", dissect_rpc_unknown, dissect_rpc_unknown },
+ { PORTMAPPROC_CALLIT, "CALLIT", dissect_rpc_unknown, dissect_rpc_unknown },
{ 0, NULL, NULL, NULL }
};
static const value_string portmap1_proc_vals[] = {
@@ -357,7 +356,7 @@ static const value_string portmap1_proc_vals[] = {
static const vsff portmap2_proc[] = {
{ PORTMAPPROC_NULL, "NULL",
- NULL, NULL },
+ dissect_rpc_void, dissect_rpc_void },
{ PORTMAPPROC_SET, "SET",
dissect_set_call, dissect_set_reply },
{ PORTMAPPROC_UNSET, "UNSET",
@@ -365,7 +364,7 @@ static const vsff portmap2_proc[] = {
{ PORTMAPPROC_GETPORT, "GETPORT",
dissect_getport_call, dissect_getport_reply },
{ PORTMAPPROC_DUMP, "DUMP",
- NULL, dissect_dump_reply },
+ dissect_rpc_void, dissect_dump_reply },
{ PORTMAPPROC_CALLIT, "CALLIT",
dissect_callit_call, dissect_callit_reply },
{ 0, NULL, NULL, NULL }
@@ -473,23 +472,23 @@ dissect_rpcb_rmtcallres(tvbuff_t *tvb, packet_info *pinfo _U_,
/* Portmapper version 3, RFC 1833, Page 7 */
static const vsff portmap3_proc[] = {
{ RPCBPROC_NULL, "NULL",
- NULL, NULL },
+ dissect_rpc_void, dissect_rpc_void },
{ RPCBPROC_SET, "SET",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_UNSET, "UNSET",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_GETADDR, "GETADDR",
dissect_rpcb3_getaddr_call, dissect_rpcb3_getaddr_reply},
{ RPCBPROC_DUMP, "DUMP",
- NULL, dissect_rpcb3_dump_reply },
+ dissect_rpc_void, dissect_rpcb3_dump_reply },
{ RPCBPROC_CALLIT, "CALLIT",
dissect_callit_call, dissect_rpcb_rmtcallres },
{ RPCBPROC_GETTIME, "GETTIME",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_UADDR2TADDR, "UADDR2TADDR",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_TADDR2UADDR, "TADDR2UADDR",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ 0, NULL, NULL, NULL }
};
static const value_string portmap3_proc_vals[] = {
@@ -510,31 +509,31 @@ static const value_string portmap3_proc_vals[] = {
/* Portmapper version 4, RFC 1833, Page 8 */
static const vsff portmap4_proc[] = {
{ RPCBPROC_NULL, "NULL",
- NULL, NULL },
+ dissect_rpc_void, dissect_rpc_void },
{ RPCBPROC_SET, "SET",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_UNSET, "UNSET",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_GETADDR, "GETADDR",
dissect_rpcb3_getaddr_call, dissect_rpcb3_getaddr_reply},
{ RPCBPROC_DUMP, "DUMP",
- NULL, dissect_rpcb3_dump_reply },
+ dissect_rpc_void, dissect_rpcb3_dump_reply },
{ RPCBPROC_BCAST, "BCAST",
dissect_callit_call, dissect_rpcb_rmtcallres },
{ RPCBPROC_GETTIME, "GETTIME",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_UADDR2TADDR, "UADDR2TADDR",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_TADDR2UADDR, "TADDR2UADDR",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_GETVERSADDR, "GETVERSADDR",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_INDIRECT, "INDIRECT",
dissect_callit_call, dissect_rpcb_rmtcallres },
{ RPCBPROC_GETADDRLIST, "GETADDRLIST",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ RPCBPROC_GETSTAT, "GETSTAT",
- NULL, NULL },
+ dissect_rpc_unknown, dissect_rpc_unknown },
{ 0, NULL, NULL, NULL }
};
static const value_string portmap4_proc_vals[] = {