|
@@ -810,8 +810,8 @@ void nhrp_peer_recv(struct nhrp_peer *p, struct zbuf *zb)
|
|
|
|
|
|
extoff = htons(hdr->extension_offset);
|
|
|
if (extoff) {
|
|
|
- if (extoff >= realsize) {
|
|
|
- info = "extoff larger than packet";
|
|
|
+ if ((extoff >= realsize) || (extoff < (zb->head - zb->buf))) {
|
|
|
+ info = "extoff larger than packet, or smaller than header";
|
|
|
goto drop;
|
|
|
}
|
|
|
paylen = extoff - (zb->head - zb->buf);
|