forked from Mirror/frr
ospf6d: Ensure that ospf6d does not memcpy beyond end of data
Ensure that received data size can fit into temp variable that is used to dump data. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
75700af602
commit
d9529c9fb1
|
@ -120,7 +120,13 @@ void ospf6_auth_hdr_dump_recv(struct ospf6_header *ospfh, uint16_t length,
|
||||||
ospf6_at_hdr =
|
ospf6_at_hdr =
|
||||||
(struct ospf6_auth_hdr *)((uint8_t *)ospfh + oh_len);
|
(struct ospf6_auth_hdr *)((uint8_t *)ospfh + oh_len);
|
||||||
at_hdr_len = ntohs(ospf6_at_hdr->length);
|
at_hdr_len = ntohs(ospf6_at_hdr->length);
|
||||||
hash_len = at_hdr_len - OSPF6_AUTH_HDR_MIN_SIZE;
|
hash_len = at_hdr_len - (uint16_t)OSPF6_AUTH_HDR_MIN_SIZE;
|
||||||
|
if (hash_len > KEYCHAIN_MAX_HASH_SIZE) {
|
||||||
|
zlog_debug(
|
||||||
|
"Specified value for hash_len %u is greater than expected %u",
|
||||||
|
hash_len, KEYCHAIN_MAX_HASH_SIZE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
memcpy(temp, ospf6_at_hdr->data, hash_len);
|
memcpy(temp, ospf6_at_hdr->data, hash_len);
|
||||||
temp[hash_len] = '\0';
|
temp[hash_len] = '\0';
|
||||||
zlog_debug("OSPF6 Authentication Trailer");
|
zlog_debug("OSPF6 Authentication Trailer");
|
||||||
|
|
Loading…
Reference in a new issue