diff options
author | Donald Sharp <sharpd@nvidia.com> | 2021-08-11 01:21:19 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@nvidia.com> | 2021-09-14 19:07:06 +0200 |
commit | cf680c38a91f92f3389c08b947faa37a16f08076 (patch) | |
tree | 20567c2166e495916b5a3d0a3c1ea6bd0c1c891d | |
parent | Merge pull request #9381 from AnuradhaKaruppiah/evpn-mh-display (diff) | |
download | frr-cf680c38a91f92f3389c08b947faa37a16f08076.tar.xz frr-cf680c38a91f92f3389c08b947faa37a16f08076.zip |
ospfd: Ensure we have some non header lsa data
In some cases FRR is receiving a lsa data packet
with a length set to the length of the header only.
If we are expecting data from a peer in the form
of lsa data. Let's enforce it.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
-rw-r--r-- | ospfd/ospf_opaque.h | 2 | ||||
-rw-r--r-- | ospfd/ospf_packet.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/ospfd/ospf_opaque.h b/ospfd/ospf_opaque.h index 7d401c3dc..aeaeea918 100644 --- a/ospfd/ospf_opaque.h +++ b/ospfd/ospf_opaque.h @@ -77,6 +77,8 @@ #define OPAQUE_TYPE_RANGE_RESERVED(type) (127 < (type) && (type) <= 255) +#define OSPF_OPAQUE_LSA_MIN_SIZE 4U + #define VALID_OPAQUE_INFO_LEN(lsahdr) \ ((ntohs((lsahdr)->length) >= sizeof(struct lsa_header)) \ && ((ntohs((lsahdr)->length) < OSPF_MAX_LSA_SIZE)) \ diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c index 1efdfee3b..7c32c18d4 100644 --- a/ospfd/ospf_packet.c +++ b/ospfd/ospf_packet.c @@ -108,9 +108,9 @@ static const uint16_t ospf_lsa_minlen[] = { 0, OSPF_AS_EXTERNAL_LSA_MIN_SIZE, 0, - 0, - 0, - 0, + OSPF_OPAQUE_LSA_MIN_SIZE, + OSPF_OPAQUE_LSA_MIN_SIZE, + OSPF_OPAQUE_LSA_MIN_SIZE, }; /* for ospf_check_auth() */ |