660f6ab549
ProcDRI2Dispatch uses LocalClient to determine if it's safe to respond to a client that has made DRI2 requests which aren't sensible for remote clients (anything but version). When the client has disappeared mid-request stream (e.g. as a result of a kill -9, or a client-side bug), LocalClient causes the X server to follow suit, as ((OsCommPtr)client->osPrivate)->trans_conn is NULL at this point. The simple and obvious fix is to just return "not local" when trans_conn is NULL, which fixes the crash I was seeing; however Keith Packard pointed out that just checking trans_conn isn't enough; quoting Keith: "This looks almost right to me -- I reviewed the os code to see when _XSERVTransClose is called (which is what frees the trans_conn data) and found that every place which called that immediately set trans_conn to NULL, except for the call in CloseDownFileDescriptor which is only called from CloseDownConnection and which is immediately followed by freeing the OsCommRec and setting client->osPrivate to NULL. So, I'd suggest checking client->osPrivate in addition to the above check." Signed-off-by: Simon Farnsworth <simon.farnsworth@onelan.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com> |
||
---|---|---|
.. | ||
.gitignore | ||
access.c | ||
auth.c | ||
backtrace.c | ||
connection.c | ||
io.c | ||
log.c | ||
Makefile.am | ||
mitauth.c | ||
oscolor.c | ||
osdep.h | ||
osinit.c | ||
rpcauth.c | ||
strcasecmp.c | ||
strcasestr.c | ||
strlcat.c | ||
strlcpy.c | ||
utils.c | ||
WaitFor.c | ||
xdmauth.c | ||
xdmcp.c | ||
xprintf.c | ||
xsha1.c | ||
xstrans.c |