IEC-60870-5-104: apci type endianness bugfix
The type field in the IEC-60870-5-104 header is parsed wrongly. The type is encoded in the headers third byte: I.e. a U-frame is encoded as xxxxxx11b, a S-frame as xxxxxx01b and an I-frame as xxxxxxx0b. Yet the current parser reads the information from the MSB.
This commit is contained in:
parent
676ed85296
commit
f9ee2c14a0
|
@ -2105,9 +2105,9 @@ static int dissect_iec60870_104(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
|
|||
type = temp8 & 0x03;
|
||||
|
||||
if (type == I_TYPE)
|
||||
proto_tree_add_bits_item(it104tree, hf_apcitype, tvb, (Off + 2) * 8 + 7, 1, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_bits_item(it104tree, hf_apcitype, tvb, (Off + 2) * 8 + 7, 1, ENC_BIG_ENDIAN);
|
||||
else
|
||||
proto_tree_add_bits_item(it104tree, hf_apcitype, tvb, (Off + 2) * 8 + 6, 2, ENC_LITTLE_ENDIAN);
|
||||
proto_tree_add_bits_item(it104tree, hf_apcitype, tvb, (Off + 2) * 8 + 6, 2, ENC_BIG_ENDIAN);
|
||||
|
||||
if (len <= APDU_MAX_LEN) {
|
||||
wmem_strbuf_append_printf(res, "%s %s ",
|
||||
|
|
Loading…
Reference in New Issue