From d4fabc217e8cd02aca4d248229bb8a030b2bbfe2 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Wed, 1 Dec 2010 11:15:16 +0100 Subject: libvncserver sockets: check cl->screen before accessing it In commit 079394ca5b14d8067b95a9cf95a834828b4425a6 new code with insufficient checks was introduced causing a segfault when doing a HTTP server connection. Such connections have no screen set in the client data structure. Signed-off-by: Tobias Doerffel --- libvncserver/sockets.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c index 7840da0..48d024c 100755 --- a/libvncserver/sockets.c +++ b/libvncserver/sockets.c @@ -499,7 +499,7 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout) int rfbReadExact(rfbClientPtr cl,char* buf,int len) { /* favor the per-screen value if set */ - if(cl->screen->maxClientWait) + if(cl->screen && cl->screen->maxClientWait) return(rfbReadExactTimeout(cl,buf,len,cl->screen->maxClientWait)); else return(rfbReadExactTimeout(cl,buf,len,rfbMaxClientWait)); @@ -521,7 +521,7 @@ rfbWriteExact(rfbClientPtr cl, fd_set fds; struct timeval tv; int totalTimeWaited = 0; - const int timeout = cl->screen->maxClientWait ? cl->screen->maxClientWait : rfbMaxClientWait; + const int timeout = (cl->screen && cl->screen->maxClientWait) ? cl->screen->maxClientWait : rfbMaxClientWait; #undef DEBUG_WRITE_EXACT #ifdef DEBUG_WRITE_EXACT -- cgit v1.2.3