diff --git a/epan/dissectors/packet-dcm.c b/epan/dissectors/packet-dcm.c
index 1dd8959..bcf613b 100644
--- a/epan/dissectors/packet-dcm.c
+++ b/epan/dissectors/packet-dcm.c
@@ -5697,6 +5697,10 @@ dissect_dcm_tag_value(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, dcm_s
if (pdv->syntax == DCM_EBE) is_little_endian = FALSE;
else is_little_endian = TRUE;
+ /* Make sure we have all the bytes of the item; this should throw
+ and exception if vl_max is so large that it causes the offset
+ to overflow. */
+ tvb_ensure_bytes_exist(tvb, offset, vl_max);
/* ---------------------------------------------------------------------------
Potentially long types. Obey vl_max