mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 16:42:32 +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;
|
mp_capability = 0;
|
||||||
optlen = stream_getc(peer->curr);
|
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 */
|
/* Extended Optional Parameters Length for BGP OPEN Message */
|
||||||
if (optlen == BGP_OPEN_NON_EXT_OPT_LEN
|
if (optlen == BGP_OPEN_NON_EXT_OPT_LEN
|
||||||
|| CHECK_FLAG(peer->flags, PEER_FLAG_EXTENDED_OPT_PARAMS)) {
|
|| CHECK_FLAG(peer->flags, PEER_FLAG_EXTENDED_OPT_PARAMS)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user