diff options
-rw-r--r-- | asn1/goose/goose.cnf | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-ber.c | 7 | ||||
-rw-r--r-- | epan/dissectors/packet-goose.c | 4 |
3 files changed, 11 insertions, 5 deletions
diff --git a/asn1/goose/goose.cnf b/asn1/goose/goose.cnf index cfbba59470..c456f6c50b 100644 --- a/asn1/goose/goose.cnf +++ b/asn1/goose/goose.cnf @@ -68,4 +68,9 @@ GSEMngtResponses/getGsReference gseMngtResponses_GetGSReference GSEMngtResponses/getGoReference gseMngtResponses_GetGOReference GSEMngtResponses/getGSSEDataOffset gseMngtResponses_GetGSSEDataOffset GSEMngtResponses/getGOOSEElementNumber gseMngtResponses_GetGOOSEElementNumber + +#.FIELD_ATTR +IECGoosePdu/stNum TYPE = FT_UINT32 DISPLAY = BASE_DEC +IECGoosePdu/sqNum TYPE = FT_UINT32 DISPLAY = BASE_DEC + #.END diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c index cc6c9bab67..6ff7ae3314 100644 --- a/epan/dissectors/packet-ber.c +++ b/epan/dissectors/packet-ber.c @@ -1710,9 +1710,10 @@ printf("INTEGERnew dissect_ber_integer(%s) entered implicit_tag:%d \n", name, im val=0; if (len > 0) { - /* extend sign bit */ - guint8 first = tvb_get_guint8(tvb, offset); - if (first & 0x80) { + /* extend sign bit for signed fields */ + guint8 first = tvb_get_guint8(tvb, offset); + enum ftenum type = proto_registrar_get_ftype(hf_id); + if (first & 0x80 && IS_FT_INT(type)) { val = -1; } if ((len > 1) && decode_warning_leading_zero_bits) { diff --git a/epan/dissectors/packet-goose.c b/epan/dissectors/packet-goose.c index 63db342ec6..c3f0042a91 100644 --- a/epan/dissectors/packet-goose.c +++ b/epan/dissectors/packet-goose.c @@ -922,11 +922,11 @@ void proto_register_goose(void) { "UtcTime", HFILL }}, { &hf_goose_stNum, { "stNum", "goose.stNum", - FT_INT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_DEC, NULL, 0, "INTEGER", HFILL }}, { &hf_goose_sqNum, { "sqNum", "goose.sqNum", - FT_INT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_DEC, NULL, 0, "INTEGER", HFILL }}, { &hf_goose_test, { "test", "goose.test", |