From 7e817aeb3a3cee7c3eb3e7685ab0ccf98a00411b Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Sat, 18 Jul 2015 23:23:32 -0700 Subject: 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 --- epan/dissectors/packet-mount.c | 53 ++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'epan/dissectors/packet-mount.c') diff --git a/epan/dissectors/packet-mount.c b/epan/dissectors/packet-mount.c index 3ffdeba210..988c1aa11d 100644 --- a/epan/dissectors/packet-mount.c +++ b/epan/dissectors/packet-mount.c @@ -670,23 +670,23 @@ dissect_mount_statvfs_reply(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t } /* proc number, "proc name", dissect_request, dissect_reply */ -/* NULL as function pointer means: type of arguments is "void". */ /* Mount protocol version 1, RFC 1094 */ static const vsff mount1_proc[] = { - { 0, "NULL", NULL, NULL }, + { 0, "NULL", + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_MNT, "MNT", dissect_mount_dirpath_call, dissect_mount1_mnt_reply }, { MOUNTPROC_DUMP, "DUMP", - NULL, dissect_mount_dump_reply }, + dissect_rpc_void, dissect_mount_dump_reply }, { MOUNTPROC_UMNT, "UMNT", - dissect_mount_dirpath_call, NULL }, + dissect_mount_dirpath_call, dissect_rpc_void }, { MOUNTPROC_UMNTALL, "UMNTALL", - NULL, NULL }, + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_EXPORT, "EXPORT", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { MOUNTPROC_EXPORTALL, "EXPORTALL", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { 0, NULL, NULL, NULL } }; static const value_string mount1_proc_vals[] = { @@ -706,19 +706,20 @@ static const value_string mount1_proc_vals[] = { mount V2 is V1 plus MOUNTPROC_PATHCONF to fetch information for the POSIX "pathconf()" call. */ static const vsff mount2_proc[] = { - { 0, "NULL", NULL, NULL }, + { 0, "NULL", + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_MNT, "MNT", dissect_mount_dirpath_call, dissect_mount1_mnt_reply }, { MOUNTPROC_DUMP, "DUMP", - NULL, dissect_mount_dump_reply }, + dissect_rpc_void, dissect_mount_dump_reply }, { MOUNTPROC_UMNT, "UMNT", - dissect_mount_dirpath_call, NULL }, + dissect_mount_dirpath_call, dissect_rpc_void }, { MOUNTPROC_UMNTALL, "UMNTALL", - NULL, NULL }, + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_EXPORT, "EXPORT", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { MOUNTPROC_EXPORTALL, "EXPORTALL", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { MOUNTPROC_PATHCONF, "PATHCONF", dissect_mount_dirpath_call, dissect_mount_pathconf_reply }, { 0, NULL, NULL, NULL } @@ -739,17 +740,18 @@ static const value_string mount2_proc_vals[] = { /* Mount protocol version 3, RFC 1813 */ static const vsff mount3_proc[] = { - { 0, "NULL", NULL, NULL }, + { 0, "NULL", + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_MNT, "MNT", dissect_mount_dirpath_call, dissect_mount3_mnt_reply }, { MOUNTPROC_DUMP, "DUMP", - NULL, dissect_mount_dump_reply }, + dissect_rpc_void, dissect_mount_dump_reply }, { MOUNTPROC_UMNT, "UMNT", - dissect_mount_dirpath_call, NULL }, + dissect_mount_dirpath_call, dissect_rpc_void }, { MOUNTPROC_UMNTALL, "UMNTALL", - NULL, NULL }, + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_EXPORT, "EXPORT", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { 0, NULL, NULL, NULL } }; static const value_string mount3_proc_vals[] = { @@ -767,21 +769,22 @@ static const value_string mount3_proc_vals[] = { MOUNTPROC_EXPORTLIST and MOUNTPROC_STATVFS */ static const vsff sgi_mount1_proc[] = { - { 0, "NULL", NULL, NULL }, + { 0, "NULL", + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_MNT, "MNT", dissect_mount_dirpath_call, dissect_mount1_mnt_reply }, { MOUNTPROC_DUMP, "DUMP", - NULL, dissect_mount_dump_reply }, + dissect_rpc_void, dissect_mount_dump_reply }, { MOUNTPROC_UMNT, "UMNT", - dissect_mount_dirpath_call, NULL }, + dissect_mount_dirpath_call, dissect_rpc_void }, { MOUNTPROC_UMNTALL, "UMNTALL", - NULL, NULL }, + dissect_rpc_void, dissect_rpc_void }, { MOUNTPROC_EXPORT, "EXPORT", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { MOUNTPROC_EXPORTALL, "EXPORTALL", - NULL, dissect_mount_export_reply }, + dissect_rpc_void, dissect_mount_export_reply }, { MOUNTPROC_EXPORTLIST,"EXPORTLIST", - NULL, dissect_mount_exportlist_reply }, + dissect_rpc_void, dissect_mount_exportlist_reply }, { MOUNTPROC_STATVFS, "STATVFS", dissect_mount_dirpath_call, dissect_mount_statvfs_reply }, { 0, NULL, NULL, NULL } -- cgit v1.2.3