aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-fcp.c
diff options
context:
space:
mode:
authorsahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2005-05-29 02:55:12 +0000
committersahlberg <sahlberg@f5534014-38df-0310-8fa8-9805f1628bb7>2005-05-29 02:55:12 +0000
commit29a30cb8e86b3e98152a24c99c35073da5b7d8c6 (patch)
treecd7d07dba1dd90e047810555e155668fd5058425 /epan/dissectors/packet-fcp.c
parente8b0a06f58fd024b5869cfccf1a64f38f5979dbb (diff)
make all callers of dissect_scsi_cdb() first create a new subset tvb
change the signature for dissect_scsi_cdb since we no longer need to pass offset over. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@14472 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-fcp.c')
-rw-r--r--epan/dissectors/packet-fcp.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/epan/dissectors/packet-fcp.c b/epan/dissectors/packet-fcp.c
index 6c959eb9e0..4c4a80a716 100644
--- a/epan/dissectors/packet-fcp.c
+++ b/epan/dissectors/packet-fcp.c
@@ -240,6 +240,8 @@ dissect_fcp_cmnd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
fcp_conv_key_t ckey, *req_key;
scsi_task_id_t task_key;
guint16 lun=0xffff;
+ tvbuff_t *cdb_tvb;
+ int tvb_len, tvb_rlen;
/* Determine the length of the FCP part of the packet */
flags = tvb_get_guint8 (tvb, offset+10);
@@ -348,8 +350,16 @@ dissect_fcp_cmnd (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item (fcp_tree, hf_fcp_addlcdblen, tvb, offset+11, 1, 0);
proto_tree_add_item (fcp_tree, hf_fcp_rddata, tvb, offset+11, 1, 0);
proto_tree_add_item (fcp_tree, hf_fcp_wrdata, tvb, offset+11, 1, 0);
- dissect_scsi_cdb (tvb, pinfo, tree, offset+12, 16+add_len,
- SCSI_DEV_UNKNOWN, lun);
+
+ tvb_len=tvb_length_remaining(tvb, offset+12);
+ if(tvb_len>(16+add_len))
+ tvb_len=16+add_len;
+ tvb_rlen=tvb_reported_length_remaining(tvb, offset+12);
+ if(tvb_rlen>(16+add_len))
+ tvb_rlen=16+add_len;
+ cdb_tvb=tvb_new_subset(tvb, offset+12, tvb_len, tvb_rlen);
+ dissect_scsi_cdb (cdb_tvb, pinfo, tree, SCSI_DEV_UNKNOWN, lun);
+
proto_tree_add_item (fcp_tree, hf_fcp_dl, tvb, offset+12+16+add_len,
4, 0);
}