os: fix use after free in EstablishNewConnections
In the case of failure on AllocNewConnection, new_trans_conn cannot be
dereferenced because it's already freed. Swapping the order of this logic fix
the changes introduced in 04956b8043
.
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
CC: Jeremy Huddleston <jeremyhu@freedesktop.org>
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
parent
82498e3c2c
commit
f603061e94
|
@ -852,15 +852,14 @@ EstablishNewConnections(ClientPtr clientUnused, pointer closure)
|
||||||
|
|
||||||
_XSERVTransSetOption(new_trans_conn, TRANS_NONBLOCKING, 1);
|
_XSERVTransSetOption(new_trans_conn, TRANS_NONBLOCKING, 1);
|
||||||
|
|
||||||
|
if(trans_conn->flags & TRANS_NOXAUTH)
|
||||||
|
new_trans_conn->flags = new_trans_conn->flags | TRANS_NOXAUTH;
|
||||||
|
|
||||||
if (!AllocNewConnection (new_trans_conn, newconn, connect_time))
|
if (!AllocNewConnection (new_trans_conn, newconn, connect_time))
|
||||||
{
|
{
|
||||||
ErrorConnMax(new_trans_conn);
|
ErrorConnMax(new_trans_conn);
|
||||||
_XSERVTransClose(new_trans_conn);
|
_XSERVTransClose(new_trans_conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(trans_conn->flags & TRANS_NOXAUTH)
|
|
||||||
new_trans_conn->flags = new_trans_conn->flags | TRANS_NOXAUTH;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue