aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cattp.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-cattp.c')
-rw-r--r--epan/dissectors/packet-cattp.c8
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 ||