diff options
Diffstat (limited to 'dhcpv6')
-rw-r--r-- | dhcpv6/dhcpv6.go | 6 | ||||
-rw-r--r-- | dhcpv6/dhcpv6_test.go | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/dhcpv6/dhcpv6.go b/dhcpv6/dhcpv6.go index 576293d..4f7fbbb 100644 --- a/dhcpv6/dhcpv6.go +++ b/dhcpv6/dhcpv6.go @@ -46,6 +46,9 @@ func MessageFromBytes(data []byte) (*Message, error) { MessageType: messageType, } buf.ReadBytes(d.TransactionID[:]) + if buf.Error() != nil { + return nil, fmt.Errorf("Error parsing DHCPv6 header: %v", buf.Error()) + } if err := d.Options.FromBytes(buf.Data()); err != nil { return nil, err } @@ -68,6 +71,9 @@ func RelayMessageFromBytes(data []byte) (*RelayMessage, error) { d.LinkAddr = net.IP(buf.CopyN(net.IPv6len)) d.PeerAddr = net.IP(buf.CopyN(net.IPv6len)) + if buf.Error() != nil { + return nil, fmt.Errorf("Error parsing RelayMessage header: %v", buf.Error()) + } // TODO: fail if no OptRelayMessage is present. if err := d.Options.FromBytes(buf.Data()); err != nil { return nil, err diff --git a/dhcpv6/dhcpv6_test.go b/dhcpv6/dhcpv6_test.go index 476acd2..844dabf 100644 --- a/dhcpv6/dhcpv6_test.go +++ b/dhcpv6/dhcpv6_test.go @@ -140,6 +140,8 @@ func TestFromAndToBytes(t *testing.T) { func TestFromBytesInvalid(t *testing.T) { expected := [][]byte{ {}, + {30}, + {12}, } t.Parallel() for i, packet := range expected { |