]> git.puffer.fish Git - matthieu/frr.git/commit
bgpd: bgp_packet_process_error can access peer after deletion
authorDonald Sharp <sharpd@nvidia.com>
Sun, 8 Aug 2021 12:23:24 +0000 (08:23 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Sun, 8 Aug 2021 12:23:24 +0000 (08:23 -0400)
commit1fae5c8e289f3a0dd6615663fe53d5fae19f53ff
tree7da05fbb72341e0534b63943b900b00175aa9c3c
parent2570a9f16531ff1307cd6bcda2250ace49b1cf76
bgpd: bgp_packet_process_error can access peer after deletion

in bgp_io.c upon packet read of some error we are storing
the peer pointer on a thread to call bgp_packet_process_error.
In this case an event is generated that is not guaranteed to be
run immediately.  It could come in *after* the peer data structure
is deleted and as such we now are writing into memory that we
no longer possibly own as a peer data structure.

Modify the code so that the peer can track the thread associated
with the read error and then it can wisely kill that thread
when deleting the peer data structure.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_io.c
bgpd/bgpd.h