Hi, This patch fixes three problems with the SCSI persistent reserve in command: - The Additional length starts at offset 4 and not 0 - The len field contains the length used by the keys and doesn't include the header length. So don't substract the header length from the length. - The key list is traversed from the beginning to end end and not the other way around.
Patrick
Index: epan/dissectors/packet-scsi.c =================================================================== --- epan/dissectors/packet-scsi.c (revision 20564) +++ epan/dissectors/packet-scsi.c (working copy) @@ -3050,20 +3050,20 @@ proto_tree_add_text (tree, tvb, offset, 4, "Generation Number: 0x%08x", tvb_get_ntohl (tvb, offset)); len = tvb_get_ntohl (tvb, offset+4); - proto_tree_add_text (tree, tvb, offset, 4, "Additional Length: %u", + proto_tree_add_text (tree, tvb, offset+4, 4, "Additional Length: %u", len); len = (payload_len > len) ? len : payload_len; if ((flags & 0x1F) == SCSI_SPC2_RESVIN_SVCA_RDKEYS) { /* XXX - what if len is < 8? That may be illegal, but that doesn't make it impossible.... */ - numrec = (len - 8)/8; + numrec = len / 8; offset += 8; for (i = 0; i < numrec; i++) { proto_tree_add_item (tree, hf_scsi_persresv_key, tvb, offset, 8, 0); - offset -= 8; + offset += 8; } } else if ((flags & 0x1F) == SCSI_SPC2_RESVIN_SVCA_RDRESV) {
_______________________________________________ Wireshark-dev mailing list Wireshark-dev@wireshark.org http://www.wireshark.org/mailman/listinfo/wireshark-dev