diff options
-rw-r--r-- | epan/dissectors/packet-cattp.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/epan/dissectors/packet-cattp.c b/epan/dissectors/packet-cattp.c index f000a739e7..6be847104d 100644 --- a/epan/dissectors/packet-cattp.c +++ b/epan/dissectors/packet-cattp.c @@ -321,7 +321,7 @@ static gboolean dissect_cattp_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { if (tvb_captured_length(tvb) >= CATTP_HBLEN) { /* check of data is big enough for base header. */ - guint8 flags, hlen; + guint8 flags, ver, hlen; guint16 plen; hlen = tvb_get_guint8(tvb, 3); /* header len */ @@ -330,6 +330,12 @@ dissect_cattp_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da if (hlen+plen != tvb_reported_length(tvb)) /* check if data length is ok. */ return FALSE; + /* ETSI TS 102 127 V15.0.0 and earlier releases say explicitly that + the version bits must be 0. */ + ver = tvb_get_guint8(tvb, 0) & M_VERSION; + if (ver != 0) + return FALSE; + flags = tvb_get_guint8(tvb, 0) & M_FLAGS; if ( (flags & M_PDU_SYN) == F_SYN || (flags & M_PDU_RST) == F_RST || |