summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Doerffel <tobias.doerffel@gmail.com>2010-12-01 11:15:16 +0100
committerChristian Beier <dontmind@freeshell.org>2010-12-01 16:14:23 +0100
commitd4fabc217e8cd02aca4d248229bb8a030b2bbfe2 (patch)
tree84e3b7bfe61f721e36a4f206f599c09d8d299e5b
parentd5e256bd503d74825538100cf9264866a3b6d981 (diff)
downloadlibtdevnc-d4fabc21.tar.gz
libtdevnc-d4fabc21.zip
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 <tobias.doerffel@gmail.com>
-rwxr-xr-xlibvncserver/sockets.c4
1 files 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