summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-rpc.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-rpc.c')
-rw-r--r--epan/dissectors/packet-rpc.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c
index 6596084976..9a6a336afc 100644
--- a/epan/dissectors/packet-rpc.c
+++ b/epan/dissectors/packet-rpc.c
@@ -1534,12 +1534,12 @@ dissect_auth_gssapi_data(tvbuff_t *tvb, proto_tree *tree, int offset)
static int
call_dissect_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
- int offset, dissect_function_t* dissect_function, const char *progname,
+ int offset, new_dissector_t dissect_function, const char *progname,
rpc_call_info_value *rpc_call)
{
const char *saved_proto;
+ tvbuff_t *next_tvb;
- tvb_ensure_captured_length_remaining(tvb, offset);
if (dissect_function != NULL) {
/* set the current protocol name */
saved_proto = pinfo->current_proto;
@@ -1547,7 +1547,8 @@ call_dissect_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
pinfo->current_proto = progname;
/* call the dissector for the next level */
- offset = dissect_function(tvb, offset, pinfo, tree, rpc_call);
+ next_tvb = tvb_new_subset_remaining(tvb, offset);
+ offset += dissect_function(next_tvb, pinfo, tree, rpc_call);
/* restore the protocol name */
pinfo->current_proto = saved_proto;
@@ -1560,7 +1561,7 @@ call_dissect_function(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static int
dissect_rpc_authgss_integ_data(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, int offset,
- dissect_function_t* dissect_function,
+ new_dissector_t dissect_function,
const char *progname, rpc_call_info_value *rpc_call)
{
guint32 length, rounded_length, seq;
@@ -1644,7 +1645,7 @@ dissect_rpc_indir_call(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
rpc_proc_info_key key;
rpc_proc_info_value *value;
rpc_call_info_value *rpc_call;
- dissect_function_t *dissect_function = NULL;
+ new_dissector_t dissect_function = NULL;
rpc_conv_info_t *rpc_conv_info=NULL;
guint32 xid;
@@ -1791,7 +1792,7 @@ dissect_rpc_indir_reply(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static address null_address = { AT_NONE, 0, NULL };
rpc_call_info_value *rpc_call;
const char *procname=NULL;
- dissect_function_t *dissect_function = NULL;
+ new_dissector_t dissect_function = NULL;
rpc_conv_info_t *rpc_conv_info=NULL;
guint32 xid;
@@ -2018,7 +2019,7 @@ dissect_rpc_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
static address null_address = { AT_NONE, 0, NULL };
nstime_t ns;
- dissect_function_t *dissect_function = NULL;
+ new_dissector_t dissect_function = NULL;
gboolean dissect_rpc_flag = TRUE;
rpc_conv_info_t *rpc_conv_info=NULL;