Commit 67094d7c authored by dscho's avatar dscho

replaced xalloc with malloc functions, udp input support (untested), fixed http

parent 519a8e0e
...@@ -30,10 +30,6 @@ ...@@ -30,10 +30,6 @@
#include <stdlib.h> #include <stdlib.h>
#include "rfb.h" #include "rfb.h"
char *rfbAuthPasswdFile = NULL;
/* /*
* rfbAuthNewClient is called when we reach the point of authenticating * rfbAuthNewClient is called when we reach the point of authenticating
* a new client. If authentication isn't being used then we simply send * a new client. If authentication isn't being used then we simply send
...@@ -49,15 +45,12 @@ rfbAuthNewClient(cl) ...@@ -49,15 +45,12 @@ rfbAuthNewClient(cl)
cl->state = RFB_AUTHENTICATION; cl->state = RFB_AUTHENTICATION;
if (rfbAuthPasswdFile && !cl->reverseConnection) { if (cl->screen->rfbAuthPasswdData && !cl->reverseConnection) {
*(CARD32 *)buf = Swap32IfLE(rfbVncAuth); *(CARD32 *)buf = Swap32IfLE(rfbVncAuth);
vncRandomBytes(cl->authChallenge); vncRandomBytes(cl->authChallenge);
memcpy(&buf[4], (char *)cl->authChallenge, CHALLENGESIZE); memcpy(&buf[4], (char *)cl->authChallenge, CHALLENGESIZE);
len = 4 + CHALLENGESIZE; len = 4 + CHALLENGESIZE;
} else { } else {
*(CARD32 *)buf = Swap32IfLE(rfbNoAuth); *(CARD32 *)buf = Swap32IfLE(rfbNoAuth);
len = 4; len = 4;
cl->state = RFB_INITIALISATION; cl->state = RFB_INITIALISATION;
...@@ -80,7 +73,7 @@ void ...@@ -80,7 +73,7 @@ void
rfbAuthProcessClientMessage(cl) rfbAuthProcessClientMessage(cl)
rfbClientPtr cl; rfbClientPtr cl;
{ {
char *passwd; char passwd[1024];
int i, n; int i, n;
CARD8 response[CHALLENGESIZE]; CARD8 response[CHALLENGESIZE];
CARD32 authResult; CARD32 authResult;
...@@ -92,14 +85,9 @@ rfbAuthProcessClientMessage(cl) ...@@ -92,14 +85,9 @@ rfbAuthProcessClientMessage(cl)
return; return;
} }
passwd = vncDecryptPasswdFromFile(rfbAuthPasswdFile); if(!cl->screen->getPassword(cl,passwd,MAXPWLEN)) {
rfbLog("rfbAuthProcessClientMessage: could not get password\n");
if (passwd == NULL) {
rfbLog("rfbAuthProcessClientMessage: could not get password from %s\n",
rfbAuthPasswdFile);
authResult = Swap32IfLE(rfbVncAuthFailed); authResult = Swap32IfLE(rfbVncAuthFailed);
if (WriteExact(cl, (char *)&authResult, 4) < 0) { if (WriteExact(cl, (char *)&authResult, 4) < 0) {
rfbLogPerror("rfbAuthProcessClientMessage: write"); rfbLogPerror("rfbAuthProcessClientMessage: write");
} }
......
...@@ -105,17 +105,17 @@ rfbSendSmallRectEncodingCoRRE(cl, x, y, w, h) ...@@ -105,17 +105,17 @@ rfbSendSmallRectEncodingCoRRE(cl, x, y, w, h)
if (rreBeforeBufSize < maxRawSize) { if (rreBeforeBufSize < maxRawSize) {
rreBeforeBufSize = maxRawSize; rreBeforeBufSize = maxRawSize;
if (rreBeforeBuf == NULL) if (rreBeforeBuf == NULL)
rreBeforeBuf = (char *)xalloc(rreBeforeBufSize); rreBeforeBuf = (char *)malloc(rreBeforeBufSize);
else else
rreBeforeBuf = (char *)xrealloc(rreBeforeBuf, rreBeforeBufSize); rreBeforeBuf = (char *)realloc(rreBeforeBuf, rreBeforeBufSize);
} }
if (rreAfterBufSize < maxRawSize) { if (rreAfterBufSize < maxRawSize) {
rreAfterBufSize = maxRawSize; rreAfterBufSize = maxRawSize;
if (rreAfterBuf == NULL) if (rreAfterBuf == NULL)
rreAfterBuf = (char *)xalloc(rreAfterBufSize); rreAfterBuf = (char *)malloc(rreAfterBufSize);
else else
rreAfterBuf = (char *)xrealloc(rreAfterBuf, rreAfterBufSize); rreAfterBuf = (char *)realloc(rreAfterBuf, rreAfterBufSize);
} }
(*cl->translateFn)(cl->translateLookupTable,&(cl->screen->rfbServerFormat), (*cl->translateFn)(cl->translateLookupTable,&(cl->screen->rfbServerFormat),
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
"<HEAD><TITLE>File Not Found</TITLE></HEAD>\n" \ "<HEAD><TITLE>File Not Found</TITLE></HEAD>\n" \
"<BODY><H1>File Not Found</H1></BODY>\n" "<BODY><H1>File Not Found</H1></BODY>\n"
#define OK_STR "HTTP/1.0 200 OK\n\n" #define OK_STR "HTTP/1.0 200 OK\nContent-Type: text/html\n\n"
static void httpProcessInput(); static void httpProcessInput();
static Bool compareAndSkip(char **ptr, const char *str); static Bool compareAndSkip(char **ptr, const char *str);
...@@ -273,7 +273,7 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) ...@@ -273,7 +273,7 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
/* Open the file */ /* Open the file */
if ((fd = fopen(fullFname, O_RDONLY)) < 0) { if ((fd = fopen(fullFname, "r")) <= 0) {
rfbLogPerror("httpProcessInput: open"); rfbLogPerror("httpProcessInput: open");
WriteExact(&cl, NOT_FOUND_STR, strlen(NOT_FOUND_STR)); WriteExact(&cl, NOT_FOUND_STR, strlen(NOT_FOUND_STR));
httpCloseSock(rfbScreen); httpCloseSock(rfbScreen);
...@@ -283,7 +283,7 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) ...@@ -283,7 +283,7 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen)
WriteExact(&cl, OK_STR, strlen(OK_STR)); WriteExact(&cl, OK_STR, strlen(OK_STR));
while (1) { while (1) {
int n = fread(buf, BUF_SIZE-1, 1, fd); int n = fread(buf, 1, BUF_SIZE-1, fd);
if (n < 0) { if (n < 0) {
rfbLogPerror("httpProcessInput: read"); rfbLogPerror("httpProcessInput: read");
fclose(fd); fclose(fd);
......
...@@ -326,7 +326,7 @@ processArguments(rfbScreenInfoPtr rfbScreen,int argc, char *argv[]) ...@@ -326,7 +326,7 @@ processArguments(rfbScreenInfoPtr rfbScreen,int argc, char *argv[])
rfbScreen->rfbMaxClientWait = atoi(argv[++i]); rfbScreen->rfbMaxClientWait = atoi(argv[++i]);
} else if (strcmp(argv[i], "-rfbauth") == 0) { /* -rfbauth passwd-file */ } else if (strcmp(argv[i], "-rfbauth") == 0) { /* -rfbauth passwd-file */
if (i + 1 >= argc) usage(); if (i + 1 >= argc) usage();
rfbScreen->rfbAuthPasswdFile = argv[++i]; rfbScreen->rfbAuthPasswdData = argv[++i];
} else if (strcmp(argv[i], "-desktop") == 0) { /* -desktop desktop-name */ } else if (strcmp(argv[i], "-desktop") == 0) { /* -desktop desktop-name */
if (i + 1 >= argc) usage(); if (i + 1 >= argc) usage();
rfbScreen->desktopName = argv[++i]; rfbScreen->desktopName = argv[++i];
...@@ -400,6 +400,15 @@ rfbCursorPtr defaultGetCursorPtr(rfbClientPtr cl) ...@@ -400,6 +400,15 @@ rfbCursorPtr defaultGetCursorPtr(rfbClientPtr cl)
return(cl->screen->cursor); return(cl->screen->cursor);
} }
Bool defaultGetPassword(rfbClientPtr cl,char* passwd,int len)
{
char *pwd=vncDecryptPasswdFromFile(cl->screen->rfbAuthPasswdData);
if(!pwd)
return(FALSE);
strncpy(passwd,pwd,MAXPWLEN);
return(TRUE);
}
void doNothingWithClient(rfbClientPtr cl) void doNothingWithClient(rfbClientPtr cl)
{ {
} }
...@@ -511,6 +520,7 @@ rfbScreenInfoPtr rfbGetScreen(int argc,char** argv, ...@@ -511,6 +520,7 @@ rfbScreenInfoPtr rfbGetScreen(int argc,char** argv,
rfbScreen->setXCutText = defaultSetXCutText; rfbScreen->setXCutText = defaultSetXCutText;
rfbScreen->getCursorPtr = defaultGetCursorPtr; rfbScreen->getCursorPtr = defaultGetCursorPtr;
rfbScreen->setTranslateFunction = rfbSetTranslateFunction; rfbScreen->setTranslateFunction = rfbSetTranslateFunction;
rfbScreen->getPassword = defaultGetPassword;
rfbScreen->newClientHook = doNothingWithClient; rfbScreen->newClientHook = doNothingWithClient;
rfbScreen->displayHook = 0; rfbScreen->displayHook = 0;
......
This diff is collapsed.
...@@ -173,108 +173,128 @@ rfbReverseConnection(rfbScreen,host, port) ...@@ -173,108 +173,128 @@ rfbReverseConnection(rfbScreen,host, port)
*/ */
rfbClientPtr rfbClientPtr
rfbNewClient(rfbScreen,sock) rfbNewTCPOrUDPClient(rfbScreen,sock,isUDP)
rfbScreenInfoPtr rfbScreen; rfbScreenInfoPtr rfbScreen;
int sock; int sock;
Bool isUDP;
{ {
rfbProtocolVersionMsg pv; rfbProtocolVersionMsg pv;
rfbClientIteratorPtr iterator; rfbClientIteratorPtr iterator;
rfbClientPtr cl; rfbClientPtr cl,cl_;
struct sockaddr_in addr; struct sockaddr_in addr;
int addrlen = sizeof(struct sockaddr_in); int addrlen = sizeof(struct sockaddr_in);
int i; int i;
rfbLog(" other clients:\n"); cl = (rfbClientPtr)malloc(sizeof(rfbClientRec));
iterator = rfbGetClientIterator(rfbScreen);
while ((cl = rfbClientIteratorNext(iterator)) != NULL) {
rfbLog(" %s\n",cl->host);
}
rfbReleaseClientIterator(iterator);
cl = (rfbClientPtr)xalloc(sizeof(rfbClientRec));
FD_SET(sock,&(rfbScreen->allFds));
cl->screen = rfbScreen; cl->screen = rfbScreen;
cl->sock = sock; cl->sock = sock;
getpeername(sock, (struct sockaddr *)&addr, &addrlen); rfbResetStats(cl);
cl->host = strdup(inet_ntoa(addr.sin_addr));
INIT_MUTEX(cl->outputMutex); if(isUDP) {
INIT_MUTEX(cl->refCountMutex); rfbLog(" accepted UDP client\n");
INIT_COND(cl->deleteCond); } else {
getpeername(sock, (struct sockaddr *)&addr, &addrlen);
cl->host = strdup(inet_ntoa(addr.sin_addr));
cl->state = RFB_PROTOCOL_VERSION; rfbLog(" other clients:\n");
iterator = rfbGetClientIterator(rfbScreen);
while ((cl_ = rfbClientIteratorNext(iterator)) != NULL) {
rfbLog(" %s\n",cl_->host);
}
rfbReleaseClientIterator(iterator);
cl->reverseConnection = FALSE; FD_SET(sock,&(rfbScreen->allFds));
cl->readyForSetColourMapEntries = FALSE; INIT_MUTEX(cl->outputMutex);
cl->useCopyRect = FALSE; INIT_MUTEX(cl->refCountMutex);
cl->preferredEncoding = rfbEncodingRaw; INIT_COND(cl->deleteCond);
cl->correMaxWidth = 48;
cl->correMaxHeight = 48;
cl->copyRegion = sraRgnCreate(); cl->state = RFB_PROTOCOL_VERSION;
cl->copyDX = 0;
cl->copyDY = 0; cl->reverseConnection = FALSE;
cl->readyForSetColourMapEntries = FALSE;
cl->useCopyRect = FALSE;
cl->preferredEncoding = rfbEncodingRaw;
cl->correMaxWidth = 48;
cl->correMaxHeight = 48;
cl->copyRegion = sraRgnCreate();
cl->copyDX = 0;
cl->copyDY = 0;
cl->modifiedRegion = cl->modifiedRegion =
sraRgnCreateRect(0,0,rfbScreen->width,rfbScreen->height); sraRgnCreateRect(0,0,rfbScreen->width,rfbScreen->height);
INIT_MUTEX(cl->updateMutex); INIT_MUTEX(cl->updateMutex);
INIT_COND(cl->updateCond); INIT_COND(cl->updateCond);
cl->requestedRegion = sraRgnCreate(); cl->requestedRegion = sraRgnCreate();
cl->format = cl->screen->rfbServerFormat; cl->format = cl->screen->rfbServerFormat;
cl->translateFn = rfbTranslateNone; cl->translateFn = rfbTranslateNone;
cl->translateLookupTable = NULL; cl->translateLookupTable = NULL;
LOCK(rfbClientListMutex); LOCK(rfbClientListMutex);
IF_PTHREADS(cl->refCount = 0); IF_PTHREADS(cl->refCount = 0);
cl->next = rfbScreen->rfbClientHead; cl->next = rfbScreen->rfbClientHead;
cl->prev = NULL; cl->prev = NULL;
if (rfbScreen->rfbClientHead) if (rfbScreen->rfbClientHead)
rfbScreen->rfbClientHead->prev = cl; rfbScreen->rfbClientHead->prev = cl;
rfbScreen->rfbClientHead = cl; rfbScreen->rfbClientHead = cl;
UNLOCK(rfbClientListMutex); UNLOCK(rfbClientListMutex);
cl->tightCompressLevel = TIGHT_DEFAULT_COMPRESSION; cl->tightCompressLevel = TIGHT_DEFAULT_COMPRESSION;
cl->tightQualityLevel = -1; cl->tightQualityLevel = -1;
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
cl->zsActive[i] = FALSE; cl->zsActive[i] = FALSE;
cl->enableCursorShapeUpdates = FALSE; cl->enableCursorShapeUpdates = FALSE;
cl->useRichCursorEncoding = FALSE; cl->useRichCursorEncoding = FALSE;
cl->enableLastRectEncoding = FALSE; cl->enableLastRectEncoding = FALSE;
rfbResetStats(cl); cl->compStreamInited = FALSE;
cl->compStream.total_in = 0;
cl->compStream.total_out = 0;
cl->compStream.zalloc = Z_NULL;
cl->compStream.zfree = Z_NULL;
cl->compStream.opaque = Z_NULL;
cl->compStreamInited = FALSE; cl->zlibCompressLevel = 5;
cl->compStream.total_in = 0;
cl->compStream.total_out = 0;
cl->compStream.zalloc = Z_NULL;
cl->compStream.zfree = Z_NULL;
cl->compStream.opaque = Z_NULL;
cl->zlibCompressLevel = 5; sprintf(pv,rfbProtocolVersionFormat,rfbProtocolMajorVersion,
rfbProtocolMinorVersion);
sprintf(pv,rfbProtocolVersionFormat,rfbProtocolMajorVersion, if (WriteExact(cl, pv, sz_rfbProtocolVersionMsg) < 0) {
rfbProtocolMinorVersion);
cl->clientData = NULL;
cl->clientGoneHook = doNothingWithClient;
cl->screen->newClientHook(cl);
if (WriteExact(cl, pv, sz_rfbProtocolVersionMsg) < 0) {
rfbLogPerror("rfbNewClient: write"); rfbLogPerror("rfbNewClient: write");
rfbCloseClient(cl); rfbCloseClient(cl);
return NULL; return NULL;
}
} }
cl->clientData = NULL;
cl->clientGoneHook = doNothingWithClient;
cl->screen->newClientHook(cl);
return cl; return cl;
} }
rfbClientPtr
rfbNewClient(rfbScreen,sock)
rfbScreenInfoPtr rfbScreen;
int sock;
{
return(rfbNewTCPOrUDPClient(rfbScreen,sock,FALSE));
}
rfbClientPtr
rfbNewUDPClient(rfbScreen)
rfbScreenInfoPtr rfbScreen;
{
return((rfbScreen->udpClient=
rfbNewTCPOrUDPClient(rfbScreen,rfbScreen->udpSock,TRUE)));
}
/* /*
* rfbClientConnectionGone is called from sockets.c just after a connection * rfbClientConnectionGone is called from sockets.c just after a connection
...@@ -342,7 +362,7 @@ rfbClientConnectionGone(cl) ...@@ -342,7 +362,7 @@ rfbClientConnectionGone(cl)
rfbPrintStats(cl); rfbPrintStats(cl);
xfree(cl); free(cl);
} }
...@@ -434,14 +454,14 @@ rfbClientConnFailed(cl, reason) ...@@ -434,14 +454,14 @@ rfbClientConnFailed(cl, reason)
char *buf; char *buf;
int len = strlen(reason); int len = strlen(reason);
buf = (char *)xalloc(8 + len); buf = (char *)malloc(8 + len);
((CARD32 *)buf)[0] = Swap32IfLE(rfbConnFailed); ((CARD32 *)buf)[0] = Swap32IfLE(rfbConnFailed);
((CARD32 *)buf)[1] = Swap32IfLE(len); ((CARD32 *)buf)[1] = Swap32IfLE(len);
memcpy(buf + 8, reason, len); memcpy(buf + 8, reason, len);
if (WriteExact(cl, buf, 8 + len) < 0) if (WriteExact(cl, buf, 8 + len) < 0)
rfbLogPerror("rfbClientConnFailed: write"); rfbLogPerror("rfbClientConnFailed: write");
xfree(buf); free(buf);
rfbCloseClient(cl); rfbCloseClient(cl);
} }
...@@ -808,19 +828,19 @@ rfbProcessClientNormalMessage(cl) ...@@ -808,19 +828,19 @@ rfbProcessClientNormalMessage(cl)
msg.cct.length = Swap32IfLE(msg.cct.length); msg.cct.length = Swap32IfLE(msg.cct.length);
str = (char *)xalloc(msg.cct.length); str = (char *)malloc(msg.cct.length);
if ((n = ReadExact(cl, str, msg.cct.length)) <= 0) { if ((n = ReadExact(cl, str, msg.cct.length)) <= 0) {
if (n != 0) if (n != 0)
rfbLogPerror("rfbProcessClientNormalMessage: read"); rfbLogPerror("rfbProcessClientNormalMessage: read");
xfree(str); free(str);
rfbCloseClient(cl); rfbCloseClient(cl);
return; return;
} }
cl->screen->setXCutText(str, msg.cct.length, cl); cl->screen->setXCutText(str, msg.cct.length, cl);
xfree(str); free(str);
return; return;
...@@ -1388,18 +1408,21 @@ rfbNewUDPConnection(rfbScreen,sock) ...@@ -1388,18 +1408,21 @@ rfbNewUDPConnection(rfbScreen,sock)
* number of bytes we can possibly get. * number of bytes we can possibly get.
*/ */
#if 0
void void
rfbProcessUDPInput(rfbClientPtr cl) rfbProcessUDPInput(rfbScreenInfoPtr rfbScreen)
{ {
int n; int n;
rfbClientPtr cl=rfbScreen->udpClient;
rfbClientToServerMsg msg; rfbClientToServerMsg msg;
if ((n = read(cl->udpSock, (char *)&msg, sizeof(msg))) <= 0) { if(!cl)
return;
if ((n = read(rfbScreen->udpSock, (char *)&msg, sizeof(msg))) <= 0) {
if (n < 0) { if (n < 0) {
rfbLogPerror("rfbProcessUDPInput: read"); rfbLogPerror("rfbProcessUDPInput: read");
} }
rfbDisconnectUDPSock(cl); rfbDisconnectUDPSock(rfbScreen);
return; return;
} }
...@@ -1408,7 +1431,7 @@ rfbProcessUDPInput(rfbClientPtr cl) ...@@ -1408,7 +1431,7 @@ rfbProcessUDPInput(rfbClientPtr cl)
case rfbKeyEvent: case rfbKeyEvent:
if (n != sz_rfbKeyEventMsg) { if (n != sz_rfbKeyEventMsg) {
rfbLog("rfbProcessUDPInput: key event incorrect length\n"); rfbLog("rfbProcessUDPInput: key event incorrect length\n");
rfbDisconnectUDPSock(cl); rfbDisconnectUDPSock(rfbScreen);
return; return;
} }
cl->screen->kbdAddEvent(msg.ke.down, (KeySym)Swap32IfLE(msg.ke.key), cl); cl->screen->kbdAddEvent(msg.ke.down, (KeySym)Swap32IfLE(msg.ke.key), cl);
...@@ -1417,7 +1440,7 @@ rfbProcessUDPInput(rfbClientPtr cl) ...@@ -1417,7 +1440,7 @@ rfbProcessUDPInput(rfbClientPtr cl)
case rfbPointerEvent: case rfbPointerEvent:
if (n != sz_rfbPointerEventMsg) { if (n != sz_rfbPointerEventMsg) {
rfbLog("rfbProcessUDPInput: ptr event incorrect length\n"); rfbLog("rfbProcessUDPInput: ptr event incorrect length\n");
rfbDisconnectUDPSock(cl); rfbDisconnectUDPSock(rfbScreen);
return; return;
} }
cl->screen->ptrAddEvent(msg.pe.buttonMask, cl->screen->ptrAddEvent(msg.pe.buttonMask,
...@@ -1427,7 +1450,6 @@ rfbProcessUDPInput(rfbClientPtr cl) ...@@ -1427,7 +1450,6 @@ rfbProcessUDPInput(rfbClientPtr cl)
default: default:
rfbLog("rfbProcessUDPInput: unknown message type %d\n", rfbLog("rfbProcessUDPInput: unknown message type %d\n",
msg.type); msg.type);
rfbDisconnectUDPSock(cl); rfbDisconnectUDPSock(rfbScreen);
} }
} }
#endif
...@@ -71,17 +71,17 @@ rfbSendRectEncodingRRE(cl, x, y, w, h) ...@@ -71,17 +71,17 @@ rfbSendRectEncodingRRE(cl, x, y, w, h)
if (rreBeforeBufSize < maxRawSize) { if (rreBeforeBufSize < maxRawSize) {
rreBeforeBufSize = maxRawSize; rreBeforeBufSize = maxRawSize;
if (rreBeforeBuf == NULL) if (rreBeforeBuf == NULL)
rreBeforeBuf = (char *)xalloc(rreBeforeBufSize); rreBeforeBuf = (char *)malloc(rreBeforeBufSize);
else else
rreBeforeBuf = (char *)xrealloc(rreBeforeBuf, rreBeforeBufSize); rreBeforeBuf = (char *)realloc(rreBeforeBuf, rreBeforeBufSize);
} }
if (rreAfterBufSize < maxRawSize) { if (rreAfterBufSize < maxRawSize) {
rreAfterBufSize = maxRawSize; rreAfterBufSize = maxRawSize;
if (rreAfterBuf == NULL) if (rreAfterBuf == NULL)
rreAfterBuf = (char *)xalloc(rreAfterBufSize); rreAfterBuf = (char *)malloc(rreAfterBufSize);
else else
rreAfterBuf = (char *)xrealloc(rreAfterBuf, rreAfterBufSize); rreAfterBuf = (char *)realloc(rreAfterBuf, rreAfterBufSize);
} }
(*cl->translateFn)(cl->translateLookupTable, (*cl->translateFn)(cl->translateLookupTable,
......
...@@ -214,15 +214,14 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) ...@@ -214,15 +214,14 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
} }
if ((rfbScreen->udpSock != -1) && FD_ISSET(rfbScreen->udpSock, &fds)) { if ((rfbScreen->udpSock != -1) && FD_ISSET(rfbScreen->udpSock, &fds)) {
if(!rfbScreen->udpClient)
rfbNewUDPClient(rfbScreen);
if (recvfrom(rfbScreen->udpSock, buf, 1, MSG_PEEK, if (recvfrom(rfbScreen->udpSock, buf, 1, MSG_PEEK,
(struct sockaddr *)&addr, &addrlen) < 0) { (struct sockaddr *)&addr, &addrlen) < 0) {
rfbLogPerror("rfbCheckFds: UDP: recvfrom"); rfbLogPerror("rfbCheckFds: UDP: recvfrom");
rfbDisconnectUDPSock(rfbScreen); rfbDisconnectUDPSock(rfbScreen);
rfbScreen->udpSockConnected = FALSE;
} else { } else {
if (!rfbScreen->udpSockConnected || if (!rfbScreen->udpSockConnected ||
(memcmp(&addr, &rfbScreen->udpRemoteAddr, addrlen) != 0)) (memcmp(&addr, &rfbScreen->udpRemoteAddr, addrlen) != 0))
{ {
...@@ -242,8 +241,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) ...@@ -242,8 +241,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
rfbNewUDPConnection(rfbScreen,rfbScreen->udpSock); rfbNewUDPConnection(rfbScreen,rfbScreen->udpSock);
} }
/* TODO: UDP also needs a client rfbProcessUDPInput(rfbScreen);
rfbProcessUDPInput(rfbScreen,rfbScreen->udpSock); */
} }
FD_CLR(rfbScreen->udpSock, &fds); FD_CLR(rfbScreen->udpSock, &fds);
...@@ -263,7 +261,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) ...@@ -263,7 +261,7 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
void void
rfbDisconnectUDPSock(rfbScreenInfoPtr rfbScreen) rfbDisconnectUDPSock(rfbScreenInfoPtr rfbScreen)
{ {
rfbScreen->udpSockConnected = FALSE; rfbScreen->udpSockConnected = FALSE;
} }
......
...@@ -76,7 +76,7 @@ sraSpanRemove(sraSpan *span) { ...@@ -76,7 +76,7 @@ sraSpanRemove(sraSpan *span) {
void void
sraSpanDestroy(sraSpan *span) { sraSpanDestroy(sraSpan *span) {
if (span->subspan) sraSpanListDestroy(span->subspan); if (span->subspan) sraSpanListDestroy(span->subspan);
xfree(span); free(span);
} }
void void
...@@ -153,7 +153,7 @@ sraSpanListDestroy(sraSpanList *list) { ...@@ -153,7 +153,7 @@ sraSpanListDestroy(sraSpanList *list) {
sraSpanDestroy(curr); sraSpanDestroy(curr);
curr = next; curr = next;
} }
xfree(list); free(list);
} }
void void
......
...@@ -82,7 +82,7 @@ rfbInitTrueColourSingleTable24 (char **table, rfbPixelFormat *in, ...@@ -82,7 +82,7 @@ rfbInitTrueColourSingleTable24 (char **table, rfbPixelFormat *in,
int nEntries = 1 << in->bitsPerPixel; int nEntries = 1 << in->bitsPerPixel;
if (*table) free(*table); if (*table) free(*table);
*table = (char *)xalloc(nEntries * 3 + 1); *table = (char *)malloc(nEntries * 3 + 1);
t = (CARD8 *)*table; t = (CARD8 *)*table;
for (i = 0; i < nEntries; i++) { for (i = 0; i < nEntries; i++) {
...@@ -121,7 +121,7 @@ rfbInitTrueColourRGBTables24 (char **table, rfbPixelFormat *in, ...@@ -121,7 +121,7 @@ rfbInitTrueColourRGBTables24 (char **table, rfbPixelFormat *in,
CARD8 *blueTable; CARD8 *blueTable;
if (*table) free(*table); if (*table) free(*table);
*table = (char *)xalloc((in->redMax + in->greenMax + in->blueMax + 3) *table = (char *)malloc((in->redMax + in->greenMax + in->blueMax + 3)
* 3 + 1); * 3 + 1);
redTable = (CARD8 *)*table; redTable = (CARD8 *)*table;
greenTable = redTable + 3*(in->redMax + 1); greenTable = redTable + 3*(in->redMax + 1);
......
...@@ -66,7 +66,7 @@ rfbInitTrueColourSingleTableOUT (char **table, rfbPixelFormat *in, ...@@ -66,7 +66,7 @@ rfbInitTrueColourSingleTableOUT (char **table, rfbPixelFormat *in,
int nEntries = 1 << in->bitsPerPixel; int nEntries = 1 << in->bitsPerPixel;
if (*table) free(*table); if (*table) free(*table);
*table = (char *)xalloc(nEntries * sizeof(OUT_T)); *table = (char *)malloc(nEntries * sizeof(OUT_T));
t = (OUT_T *)*table; t = (OUT_T *)*table;
for (i = 0; i < nEntries; i++) { for (i = 0; i < nEntries; i++) {
...@@ -104,7 +104,7 @@ rfbInitTrueColourRGBTablesOUT (char **table, rfbPixelFormat *in, ...@@ -104,7 +104,7 @@ rfbInitTrueColourRGBTablesOUT (char **table, rfbPixelFormat *in,
OUT_T *blueTable; OUT_T *blueTable;
if (*table) free(*table); if (*table) free(*table);
*table = (char *)xalloc((in->redMax + in->greenMax + in->blueMax + 3) *table = (char *)malloc((in->redMax + in->greenMax + in->blueMax + 3)
* sizeof(OUT_T)); * sizeof(OUT_T));
redTable = (OUT_T *)*table; redTable = (OUT_T *)*table;
greenTable = redTable + in->redMax + 1; greenTable = redTable + in->redMax + 1;
......
...@@ -241,9 +241,9 @@ rfbSendRectEncodingTight(cl, x, y, w, h) ...@@ -241,9 +241,9 @@ rfbSendRectEncodingTight(cl, x, y, w, h)
if (tightBeforeBufSize < 4) { if (tightBeforeBufSize < 4) {
tightBeforeBufSize = 4; tightBeforeBufSize = 4;
if (tightBeforeBuf == NULL) if (tightBeforeBuf == NULL)
tightBeforeBuf = (char *)xalloc(tightBeforeBufSize); tightBeforeBuf = (char *)malloc(tightBeforeBufSize);
else else
tightBeforeBuf = (char *)xrealloc(tightBeforeBuf, tightBeforeBuf = (char *)realloc(tightBeforeBuf,
tightBeforeBufSize); tightBeforeBufSize);
} }
...@@ -503,18 +503,18 @@ SendRectSimple(cl, x, y, w, h) ...@@ -503,18 +503,18 @@ SendRectSimple(cl, x, y, w, h)
if (tightBeforeBufSize < maxBeforeSize) { if (tightBeforeBufSize < maxBeforeSize) {
tightBeforeBufSize = maxBeforeSize; tightBeforeBufSize = maxBeforeSize;
if (tightBeforeBuf == NULL) if (tightBeforeBuf == NULL)
tightBeforeBuf = (char *)xalloc(tightBeforeBufSize); tightBeforeBuf = (char *)malloc(tightBeforeBufSize);
else else
tightBeforeBuf = (char *)xrealloc(tightBeforeBuf, tightBeforeBuf = (char *)realloc(tightBeforeBuf,
tightBeforeBufSize); tightBeforeBufSize);
} }
if (tightAfterBufSize < maxAfterSize) { if (tightAfterBufSize < maxAfterSize) {
tightAfterBufSize = maxAfterSize; tightAfterBufSize = maxAfterSize;
if (tightAfterBuf == NULL) if (tightAfterBuf == NULL)
tightAfterBuf = (char *)xalloc(tightAfterBufSize); tightAfterBuf = (char *)malloc(tightAfterBufSize);
else else
tightAfterBuf = (char *)xrealloc(tightAfterBuf, tightAfterBuf = (char *)realloc(tightAfterBuf,
tightAfterBufSize); tightAfterBufSize);
} }
...@@ -844,7 +844,7 @@ SendGradientRect(cl, w, h) ...@@ -844,7 +844,7 @@ SendGradientRect(cl, w, h)
} }
if (prevRowBuf == NULL) if (prevRowBuf == NULL)
prevRowBuf = (int *)xalloc(2048 * 3 * sizeof(int)); prevRowBuf = (int *)malloc(2048 * 3 * sizeof(int));
cl->updateBuf[cl->ublen++] = (streamId | rfbTightExplicitFilter) << 4; cl->updateBuf[cl->ublen++] = (streamId | rfbTightExplicitFilter) << 4;
cl->updateBuf[cl->ublen++] = rfbTightFilterGradient; cl->updateBuf[cl->ublen++] = rfbTightFilterGradient;
...@@ -1645,7 +1645,7 @@ SendJpegRect(cl, x, y, w, h, quality) ...@@ -1645,7 +1645,7 @@ SendJpegRect(cl, x, y, w, h, quality)
if (cl->screen->rfbServerFormat.bitsPerPixel == 8) if (cl->screen->rfbServerFormat.bitsPerPixel == 8)
return SendFullColorRect(cl, w, h); return SendFullColorRect(cl, w, h);
srcBuf = (CARD8 *)xalloc(w * 3); srcBuf = (CARD8 *)malloc(w * 3);
if (srcBuf == NULL) { if (srcBuf == NULL) {
return SendFullColorRect(cl, w, h); return SendFullColorRect(cl, w, h);
} }
......
...@@ -75,9 +75,9 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h) ...@@ -75,9 +75,9 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h)
if (zlibBeforeBufSize < maxRawSize) { if (zlibBeforeBufSize < maxRawSize) {
zlibBeforeBufSize = maxRawSize; zlibBeforeBufSize = maxRawSize;
if (zlibBeforeBuf == NULL) if (zlibBeforeBuf == NULL)
zlibBeforeBuf = (char *)xalloc(zlibBeforeBufSize); zlibBeforeBuf = (char *)malloc(zlibBeforeBufSize);
else else
zlibBeforeBuf = (char *)xrealloc(zlibBeforeBuf, zlibBeforeBufSize); zlibBeforeBuf = (char *)realloc(zlibBeforeBuf, zlibBeforeBufSize);
} }
/* zlib compression is not useful for very small data sets. /* zlib compression is not useful for very small data sets.
...@@ -115,9 +115,9 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h) ...@@ -115,9 +115,9 @@ rfbSendOneRectEncodingZlib(cl, x, y, w, h)
if (zlibAfterBufSize < maxCompSize) { if (zlibAfterBufSize < maxCompSize) {
zlibAfterBufSize = maxCompSize; zlibAfterBufSize = maxCompSize;
if (zlibAfterBuf == NULL) if (zlibAfterBuf == NULL)
zlibAfterBuf = (char *)xalloc(zlibAfterBufSize); zlibAfterBuf = (char *)malloc(zlibAfterBufSize);
else else
zlibAfterBuf = (char *)xrealloc(zlibAfterBuf, zlibAfterBufSize); zlibAfterBuf = (char *)realloc(zlibAfterBuf, zlibAfterBufSize);
} }
/* /*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment