diff options
-rw-r--r-- | epan/dissectors/packet-dcerpc.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-dcerpc.h | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-ntlmssp.c | 10 |
3 files changed, 13 insertions, 8 deletions
diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c index 87d0ca56b2..e7498aa825 100644 --- a/epan/dissectors/packet-dcerpc.c +++ b/epan/dissectors/packet-dcerpc.c @@ -603,7 +603,8 @@ static void dissect_auth_verf(tvbuff_t *auth_tvb, packet_info *pinfo, /* Hand off payload data to a registered dissector */ -static tvbuff_t *decode_encrypted_data(tvbuff_t *enc_tvb, +static tvbuff_t *decode_encrypted_data(tvbuff_t *data_tvb, + tvbuff_t *auth_tvb, packet_info *pinfo, dcerpc_auth_subdissector_fns *auth_fns, gboolean is_request, @@ -617,7 +618,7 @@ static tvbuff_t *decode_encrypted_data(tvbuff_t *enc_tvb, fn = auth_fns->resp_data_fn; if (fn) - return fn(enc_tvb, 0, pinfo, auth_info); + return fn(data_tvb, auth_tvb, 0, pinfo, auth_info); return NULL; } @@ -2890,7 +2891,7 @@ dissect_dcerpc_cn_stub (tvbuff_t *tvb, int offset, packet_info *pinfo, tvbuff_t *result; result = decode_encrypted_data( - payload_tvb, pinfo, auth_fns, + payload_tvb, NULL, pinfo, auth_fns, hdr->ptype == PDU_REQ, auth_info); if (result) { diff --git a/epan/dissectors/packet-dcerpc.h b/epan/dissectors/packet-dcerpc.h index 1e4e8427e6..1d1247cd28 100644 --- a/epan/dissectors/packet-dcerpc.h +++ b/epan/dissectors/packet-dcerpc.h @@ -304,7 +304,9 @@ typedef struct _dcerpc_uuid_value { /* Authenticated pipe registration functions and miscellanea */ -typedef tvbuff_t *(dcerpc_decode_data_fnct_t)(tvbuff_t *tvb, int offset, +typedef tvbuff_t *(dcerpc_decode_data_fnct_t)(tvbuff_t *data_tvb, + tvbuff_t *auth_tvb, + int offset, packet_info *pinfo, dcerpc_auth_info *auth_info); diff --git a/epan/dissectors/packet-ntlmssp.c b/epan/dissectors/packet-ntlmssp.c index 707e90c4ff..6a595a94b1 100644 --- a/epan/dissectors/packet-ntlmssp.c +++ b/epan/dissectors/packet-ntlmssp.c @@ -1411,7 +1411,9 @@ dissect_ntlmssp_verf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } static tvbuff_t * -dissect_ntlmssp_encrypted_payload(tvbuff_t *tvb, int offset, +dissect_ntlmssp_encrypted_payload(tvbuff_t *data_tvb, + tvbuff_t *auth_tvb _U_, + int offset, packet_info *pinfo, dcerpc_auth_info *auth_info _U_) { @@ -1424,7 +1426,7 @@ dissect_ntlmssp_encrypted_payload(tvbuff_t *tvb, int offset, ntlmssp_info *conv_ntlmssp_info = NULL; ntlmssp_packet_info *packet_ntlmssp_info = NULL; - encrypted_block_length = tvb_length_remaining (tvb, offset); + encrypted_block_length = tvb_length_remaining (data_tvb, offset); /* Check to see if we already have state for this packet */ packet_ntlmssp_info = p_get_proto_data(pinfo->fd, proto_ntlmssp); @@ -1470,7 +1472,7 @@ dissect_ntlmssp_encrypted_payload(tvbuff_t *tvb, int offset, /* Store the decrypted contents in the packet state struct (of course at this point, they aren't decrypted yet) */ - packet_ntlmssp_info->decrypted_payload = tvb_memdup(tvb, offset, + packet_ntlmssp_info->decrypted_payload = tvb_memdup(data_tvb, offset, encrypted_block_length); decrypted_payloads = g_slist_prepend(decrypted_payloads, packet_ntlmssp_info->decrypted_payload); @@ -1495,7 +1497,7 @@ dissect_ntlmssp_encrypted_payload(tvbuff_t *tvb, int offset, encrypted_block_length, encrypted_block_length); - tvb_set_child_real_data_tvbuff(tvb, decr_tvb); + tvb_set_child_real_data_tvbuff(data_tvb, decr_tvb); offset += encrypted_block_length; |