mirror of
https://github.com/opnsense/src.git
synced 2026-06-14 19:20:18 -04:00
sctp: Release the socket reference when detaching an association
Later in sctp_free_assoc(), when we clean up chunk lists, sctp_free_spbufspace() is used to reset the byte count in the socket send buffer. However, if the PCB is going away, the socket may already have been detached from the PCB, in which case this becomes a use-after free. Clear the socket reference from the association before detaching it from the PCB, if the PCB has already lost its socket reference. Reviewed by: tuexen MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31753
This commit is contained in:
parent
457abbb857
commit
65f30a39e1
1 changed files with 3 additions and 0 deletions
|
|
@ -4900,6 +4900,9 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre
|
|||
if (stcb->asoc.in_asocid_hash) {
|
||||
LIST_REMOVE(stcb, sctp_tcbasocidhash);
|
||||
}
|
||||
if (inp->sctp_socket == NULL) {
|
||||
stcb->sctp_socket = NULL;
|
||||
}
|
||||
/* Now lets remove it from the list of ALL associations in the EP */
|
||||
LIST_REMOVE(stcb, sctp_tcblist);
|
||||
if (from_inpcbfree == SCTP_NORMAL_PROC) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue