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:
Tiago Vignatti 2011-04-04 21:40:06 +03:00
parent 82498e3c2c
commit f603061e94

View File

@ -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
} }