summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asn1/goose/goose.cnf5
-rw-r--r--epan/dissectors/packet-ber.c7
-rw-r--r--epan/dissectors/packet-goose.c4
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",