Skip to content

Commit 8fa0701

Browse files
authored
Merge pull request FRRouting#20686 from FRRouting/mergify/bp/stable/10.1/pr-20661
bgpd: Fix double-free crash in peer_delete() during doppelganger peer… (backport FRRouting#20661)
2 parents 7c44e31 + 399b3d9 commit 8fa0701

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

bgpd/bgp_fsm.c

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -230,28 +230,22 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
230230
XFREE(MTYPE_BGP_PEER_HOST, peer->hostname);
231231
peer->hostname = NULL;
232232
}
233-
if (from_peer->hostname != NULL) {
234-
peer->hostname = from_peer->hostname;
235-
from_peer->hostname = NULL;
236-
}
233+
if (from_peer->hostname != NULL)
234+
peer->hostname = XSTRDUP(MTYPE_BGP_PEER_HOST, from_peer->hostname);
237235

238236
if (peer->domainname) {
239237
XFREE(MTYPE_BGP_PEER_HOST, peer->domainname);
240238
peer->domainname = NULL;
241239
}
242-
if (from_peer->domainname != NULL) {
243-
peer->domainname = from_peer->domainname;
244-
from_peer->domainname = NULL;
245-
}
240+
if (from_peer->domainname != NULL)
241+
peer->domainname = XSTRDUP(MTYPE_BGP_PEER_HOST, from_peer->domainname);
246242

247243
if (peer->soft_version) {
248244
XFREE(MTYPE_BGP_SOFT_VERSION, peer->soft_version);
249245
peer->soft_version = NULL;
250246
}
251-
if (from_peer->soft_version) {
252-
peer->soft_version = from_peer->soft_version;
253-
from_peer->soft_version = NULL;
254-
}
247+
if (from_peer->soft_version)
248+
peer->soft_version = XSTRDUP(MTYPE_BGP_SOFT_VERSION, from_peer->soft_version);
255249

256250
FOREACH_AFI_SAFI (afi, safi) {
257251
peer->af_sflags[afi][safi] = from_peer->af_sflags[afi][safi];

0 commit comments

Comments
 (0)