mirror of
https://github.com/haproxy/haproxy.git
synced 2026-06-09 00:32:33 -04:00
BUG/MAJOR: dns: tcp session can remain attached to a list after a free
Using tcp, after a session release and free, the session can remain attached to the list of sessions with a response message waiting for a commit (ds->waiter). This results to a use after free of this session. Also, on some error path and after free, a session could remain attached to the lists of available idle/free sessions (ds->list). This patch ensure to remove the session from those external lists before a free. This patch should be backported to all version including the dns over tcp (2.4)
This commit is contained in:
parent
d16e7dd0e4
commit
d20dc21eec
1 changed files with 7 additions and 0 deletions
|
|
@ -758,6 +758,13 @@ void dns_session_free(struct dns_session *ds)
|
|||
|
||||
dns_queries_flush(ds);
|
||||
|
||||
/* Ensure to remove this session from external lists
|
||||
* Note: we are under the lock of dns_stream_server
|
||||
* which own the heads of those lists.
|
||||
*/
|
||||
LIST_DEL_INIT(&ds->waiter);
|
||||
LIST_DEL_INIT(&ds->list);
|
||||
|
||||
ds->dss->cur_conns--;
|
||||
/* Note: this is useless to update
|
||||
* max_active_conns here because
|
||||
|
|
|
|||
Loading…
Reference in a new issue