mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 10:08:41 +00:00
bgpd: Clear previously allocated capabilities values before parsing a new OPEN
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
parent
975e1a36f6
commit
1d181dfb98
@ -1804,6 +1804,23 @@ static int bgp_open_receive(struct peer_connection *connection,
|
||||
mp_capability = 0;
|
||||
optlen = stream_getc(peer->curr);
|
||||
|
||||
/* If we previously had some more capabilities e.g.:
|
||||
* FQDN, SOFT_VERSION, we MUST clear the values we used
|
||||
* before, to avoid using stale data.
|
||||
* Checking peer->cap is enough before checking for the real
|
||||
* data, but we don't have this check everywhere in the code,
|
||||
* thus let's clear the data here too before parsing the
|
||||
* capabilities.
|
||||
*/
|
||||
if (peer->hostname)
|
||||
XFREE(MTYPE_BGP_PEER_HOST, peer->hostname);
|
||||
|
||||
if (peer->domainname)
|
||||
XFREE(MTYPE_BGP_PEER_HOST, peer->domainname);
|
||||
|
||||
if (peer->soft_version)
|
||||
XFREE(MTYPE_BGP_SOFT_VERSION, peer->soft_version);
|
||||
|
||||
/* Extended Optional Parameters Length for BGP OPEN Message */
|
||||
if (optlen == BGP_OPEN_NON_EXT_OPT_LEN
|
||||
|| CHECK_FLAG(peer->flags, PEER_FLAG_EXTENDED_OPT_PARAMS)) {
|
||||
|
Loading…
Reference in New Issue
Block a user