diff options
Diffstat (limited to 'proto/ospf/lsupd.c')
-rw-r--r-- | proto/ospf/lsupd.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/proto/ospf/lsupd.c b/proto/ospf/lsupd.c index b1f6f464..75c67024 100644 --- a/proto/ospf/lsupd.c +++ b/proto/ospf/lsupd.c @@ -449,8 +449,9 @@ ospf_lsupd_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa, struct ospf_lsa_header *lsa = (void *) (((u8 *) ps) + offset); unsigned int lsalen = ntohs(lsa->length); - - if (((offset + lsalen) > size) || ((lsalen % 4) != 0) || + offset += lsalen; + + if ((offset > size) || ((lsalen % 4) != 0) || (lsalen <= sizeof(struct ospf_lsa_header))) { log(L_WARN "Received LSA from %I with bad length", n->ip); |