VOL-4337: Code upgrade for 3/2020 G.988 support and remaining Extended Message Set support
Change-Id: I6c5e1a167216ad9b51e9da89460e9909465ae1bc
diff --git a/mebase.go b/mebase.go
index 41f7a1f..2681078 100644
--- a/mebase.go
+++ b/mebase.go
@@ -67,7 +67,15 @@
// DecodeFromBytes decodes the given bytes into this layer
func (msg *MeBasePacket) DecodeFromBytes(data []byte, p gopacket.PacketBuilder, contentSize int) error {
- // Note: Base OMCI frame already checked for frame with at least 10 octets
+ if len(data) < contentSize {
+ p.SetTruncated()
+ layerType := msg.LayerType().String()
+ if msg.Extended {
+ layerType += " (extended)"
+ }
+ return fmt.Errorf("frame header too small. %v header length %v, %v required",
+ layerType, len(data), contentSize)
+ }
msg.EntityClass = me.ClassID(binary.BigEndian.Uint16(data[0:]))
msg.EntityInstance = binary.BigEndian.Uint16(data[2:])
msg.BaseLayer = layers.BaseLayer{Contents: data[:contentSize], Payload: data[contentSize:]}