|
@@ -13,12 +13,12 @@ func (w *wireFormat) parseInterfaceMessage(typ RIBType, b []byte) (Message, erro
|
|
|
extOff = int(nativeEndian.Uint16(b[18:20]))
|
|
extOff = int(nativeEndian.Uint16(b[18:20]))
|
|
|
bodyOff = int(nativeEndian.Uint16(b[16:18]))
|
|
bodyOff = int(nativeEndian.Uint16(b[16:18]))
|
|
|
} else {
|
|
} else {
|
|
|
- if len(b) < w.bodyOff {
|
|
|
|
|
- return nil, errMessageTooShort
|
|
|
|
|
- }
|
|
|
|
|
extOff = w.extOff
|
|
extOff = w.extOff
|
|
|
bodyOff = w.bodyOff
|
|
bodyOff = w.bodyOff
|
|
|
}
|
|
}
|
|
|
|
|
+ if len(b) < extOff || len(b) < bodyOff {
|
|
|
|
|
+ return nil, errInvalidMessage
|
|
|
|
|
+ }
|
|
|
l := int(nativeEndian.Uint16(b[:2]))
|
|
l := int(nativeEndian.Uint16(b[:2]))
|
|
|
if len(b) < l {
|
|
if len(b) < l {
|
|
|
return nil, errInvalidMessage
|
|
return nil, errInvalidMessage
|
|
@@ -53,11 +53,11 @@ func (w *wireFormat) parseInterfaceAddrMessage(typ RIBType, b []byte) (Message,
|
|
|
}
|
|
}
|
|
|
bodyOff = int(nativeEndian.Uint16(b[16:18]))
|
|
bodyOff = int(nativeEndian.Uint16(b[16:18]))
|
|
|
} else {
|
|
} else {
|
|
|
- if len(b) < w.bodyOff {
|
|
|
|
|
- return nil, errMessageTooShort
|
|
|
|
|
- }
|
|
|
|
|
bodyOff = w.bodyOff
|
|
bodyOff = w.bodyOff
|
|
|
}
|
|
}
|
|
|
|
|
+ if len(b) < bodyOff {
|
|
|
|
|
+ return nil, errInvalidMessage
|
|
|
|
|
+ }
|
|
|
l := int(nativeEndian.Uint16(b[:2]))
|
|
l := int(nativeEndian.Uint16(b[:2]))
|
|
|
if len(b) < l {
|
|
if len(b) < l {
|
|
|
return nil, errInvalidMessage
|
|
return nil, errInvalidMessage
|