mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-01 04:12:07 +00:00
fixed bug #42299 tcp_abort() leaves freed pcb on tcp_bound_pcbs list
This commit is contained in:
parent
b0502d1f3b
commit
39caf630a9
@ -117,6 +117,9 @@ HISTORY
|
||||
|
||||
++ Bugfixes:
|
||||
|
||||
2014-09-02: Simon Goldschmidt
|
||||
* tcp.c: fixed bug #42299 tcp_abort() leaves freed pcb on tcp_bound_pcbs list
|
||||
|
||||
2014-08-20: Simon Goldschmidt
|
||||
* dns.c: fixed bug #42987 lwIP is vulnerable to DNS cache poisoning due to
|
||||
non-randomized TXIDs
|
||||
|
@ -382,7 +382,12 @@ tcp_abandon(struct tcp_pcb *pcb, int reset)
|
||||
errf = pcb->errf;
|
||||
#endif /* LWIP_CALLBACK_API */
|
||||
errf_arg = pcb->callback_arg;
|
||||
TCP_PCB_REMOVE_ACTIVE(pcb);
|
||||
if ((pcb->state == CLOSED) && (pcb->local_port != 0)) {
|
||||
/* bound, not yet opened */
|
||||
TCP_RMV(&tcp_bound_pcbs, pcb);
|
||||
} else {
|
||||
TCP_PCB_REMOVE_ACTIVE(pcb);
|
||||
}
|
||||
if (pcb->unacked != NULL) {
|
||||
tcp_segs_free(pcb->unacked);
|
||||
}
|
||||
@ -1652,6 +1657,8 @@ tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb)
|
||||
}
|
||||
|
||||
pcb->state = CLOSED;
|
||||
/* reset the local port to prevent the pcb from being 'bound' */
|
||||
pcb->local_port = 0;
|
||||
|
||||
LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user