summaryrefslogtreecommitdiffhomepage
path: root/dhcpv6
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv6')
-rw-r--r--dhcpv6/dhcpv6.go6
-rw-r--r--dhcpv6/dhcpv6_test.go2
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 {