From bf2470cec69ab00f7213aa136f5a2d486c9da17a Mon Sep 17 00:00:00 2001 From: Christian Beier Date: Thu, 17 Mar 2011 13:11:59 +0100 Subject: Check rfbGetScreen() return value everywhere. This fixes a segfault when a server is invoked with the '-help' commandline argument. --- examples/backchannel.c | 2 ++ examples/camera.c | 2 ++ examples/colourmaptest.c | 3 ++- examples/example.c | 5 +++-- examples/filetransfer.c | 2 ++ examples/fontsel.c | 3 +++ examples/mac.c | 2 ++ examples/pnmshow.c | 2 ++ examples/pnmshow24.c | 2 ++ examples/simple.c | 2 ++ examples/simple15.c | 3 ++- examples/vncev.c | 2 ++ examples/zippy.c | 2 ++ 13 files changed, 28 insertions(+), 4 deletions(-) (limited to 'examples') diff --git a/examples/backchannel.c b/examples/backchannel.c index 7aa0fa1..c625753 100644 --- a/examples/backchannel.c +++ b/examples/backchannel.c @@ -107,6 +107,8 @@ int main(int argc,char** argv) rfbRegisterProtocolExtension(&backChannelExtension); server=rfbGetScreen(&argc,argv,400,300,8,3,4); + if(!server) + return 0; server->frameBuffer=(char*)malloc(400*300*4); rfbInitServer(server); rfbRunEventLoop(server,-1,FALSE); diff --git a/examples/camera.c b/examples/camera.c index 7077790..58ab1c3 100644 --- a/examples/camera.c +++ b/examples/camera.c @@ -133,6 +133,8 @@ int main(int argc,char** argv) long usec; rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,WIDTH,HEIGHT,8,3,BPP); + if(!server) + return 0; server->desktopName = "Live Video Feed Example"; server->frameBuffer=(char*)malloc(WIDTH*HEIGHT*BPP); server->alwaysShared=(1==1); diff --git a/examples/colourmaptest.c b/examples/colourmaptest.c index e403164..20ea303 100644 --- a/examples/colourmaptest.c +++ b/examples/colourmaptest.c @@ -7,7 +7,8 @@ int main(int argc,char** argv) uint8_t bytes[256*3]; rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,256,256,8,1,1); - + if(!server) + return 0; server->serverFormat.trueColour=FALSE; server->colourMap.count=256; server->colourMap.is16=FALSE; diff --git a/examples/example.c b/examples/example.c index 31bc38d..93fdf28 100644 --- a/examples/example.c +++ b/examples/example.c @@ -279,8 +279,9 @@ static void MakeRichCursor(rfbScreenInfoPtr rfbScreen) int main(int argc,char** argv) { - rfbScreenInfoPtr rfbScreen = - rfbGetScreen(&argc,argv,maxx,maxy,8,3,bpp); + rfbScreenInfoPtr rfbScreen = rfbGetScreen(&argc,argv,maxx,maxy,8,3,bpp); + if(!rfbScreen) + return 0; rfbScreen->desktopName = "LibVNCServer Example"; rfbScreen->frameBuffer = (char*)malloc(maxx*maxy*bpp); rfbScreen->alwaysShared = TRUE; diff --git a/examples/filetransfer.c b/examples/filetransfer.c index ff4af11..2d03fe1 100644 --- a/examples/filetransfer.c +++ b/examples/filetransfer.c @@ -7,6 +7,8 @@ int main(int argc,char** argv) { rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,400,300,8,3,4); + if(!server) + return 0; server->frameBuffer=(char*)malloc(400*300*4); rfbRegisterTightVNCFileTransferExtension(); rfbInitServer(server); diff --git a/examples/fontsel.c b/examples/fontsel.c index 85d2624..15139dc 100644 --- a/examples/fontsel.c +++ b/examples/fontsel.c @@ -41,6 +41,9 @@ int main(int argc,char** argv) rfbScreenInfoPtr s=rfbGetScreen(&argc,argv,640,480,8,3,3); int i,j; + if(!s) + return 0; + s->frameBuffer=(char*)malloc(640*480*3); rfbInitServer(s); diff --git a/examples/mac.c b/examples/mac.c index 2d335a4..1c85d73 100644 --- a/examples/mac.c +++ b/examples/mac.c @@ -455,6 +455,8 @@ ScreenInit(int argc, char**argv) CGDisplayPixelsHigh(kCGDirectMainDisplay), bitsPerSample, CGDisplaySamplesPerPixel(kCGDirectMainDisplay),4); + if(!rfbScreen) + exit(0); rfbScreen->serverFormat.redShift = bitsPerSample*2; rfbScreen->serverFormat.greenShift = bitsPerSample*1; rfbScreen->serverFormat.blueShift = 0; diff --git a/examples/pnmshow.c b/examples/pnmshow.c index 734155f..6ced92a 100644 --- a/examples/pnmshow.c +++ b/examples/pnmshow.c @@ -65,6 +65,8 @@ int main(int argc,char** argv) /* initialize data for vnc server */ rfbScreen = rfbGetScreen(&argc,argv,paddedWidth,height,8,(bitsPerPixelInFile+7)/8,bytesPerPixel); + if(!rfbScreen) + return 0; if(argc>1) rfbScreen->desktopName = argv[1]; else diff --git a/examples/pnmshow24.c b/examples/pnmshow24.c index a8d6c1d..81389d7 100644 --- a/examples/pnmshow24.c +++ b/examples/pnmshow24.c @@ -60,6 +60,8 @@ int main(int argc,char** argv) /* initialize data for vnc server */ rfbScreen = rfbGetScreen(&argc,argv,paddedWidth,height,8,3,3); + if(!rfbScreen) + return 0; if(argc>1) rfbScreen->desktopName = argv[1]; else diff --git a/examples/simple.c b/examples/simple.c index f6e94dc..6167d72 100644 --- a/examples/simple.c +++ b/examples/simple.c @@ -3,6 +3,8 @@ int main(int argc,char** argv) { rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,400,300,8,3,4); + if(!server) + return 0; server->frameBuffer=(char*)malloc(400*300*4); rfbInitServer(server); rfbRunEventLoop(server,-1,FALSE); diff --git a/examples/simple15.c b/examples/simple15.c index faff4f7..a90988e 100644 --- a/examples/simple15.c +++ b/examples/simple15.c @@ -9,7 +9,8 @@ int main(int argc,char** argv) uint16_t* f; rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,400,300,5,3,2); - + if(!server) + return 0; server->frameBuffer=(char*)malloc(400*300*2); f=(uint16_t*)server->frameBuffer; for(j=0;j<300;j++) diff --git a/examples/vncev.c b/examples/vncev.c index 9ebafc9..ba9441a 100644 --- a/examples/vncev.c +++ b/examples/vncev.c @@ -112,6 +112,8 @@ static enum rfbNewClientAction newclient(rfbClientPtr cl) int main(int argc,char** argv) { rfbScreenInfoPtr s=rfbGetScreen(&argc,argv,width,height,8,1,1); + if(!s) + return 0; s->colourMap.is16=FALSE; s->colourMap.count=2; s->colourMap.data.bytes=(unsigned char*)"\xd0\xd0\xd0\x30\x01\xe0"; diff --git a/examples/zippy.c b/examples/zippy.c index d8a90d7..4f793a9 100644 --- a/examples/zippy.c +++ b/examples/zippy.c @@ -27,6 +27,8 @@ int main (int argc, char **argv) return 1; server = rfbGetScreen (&argc, argv, maxx, maxy, 8, 3, bpp); + if(!server) + return 0; server->desktopName = "Zippy das wundersquirrel\'s VNC server"; server->frameBuffer = (char*)malloc(maxx*maxy*bpp); server->alwaysShared = TRUE; -- cgit v1.2.3 From 56234cd0b656de3c8827288f2adf78c9cb12d0c5 Mon Sep 17 00:00:00 2001 From: Christian Beier Date: Thu, 17 Mar 2011 13:32:08 +0100 Subject: Fix remaining compiler warnings. --- examples/rotate.c | 7 ------- examples/zippy.c | 6 ++++-- libvncserver/zrle.c | 3 --- libvncserver/zrleencodetemplate.c | 6 ------ 4 files changed, 4 insertions(+), 18 deletions(-) (limited to 'examples') diff --git a/examples/rotate.c b/examples/rotate.c index 66fca80..e552e4a 100644 --- a/examples/rotate.c +++ b/examples/rotate.c @@ -2,13 +2,6 @@ #include #include -static int gcd(int x, int y) -{ - if (x == 0) - return y; - return gcd((y % x), x); -} - #define CONCAT2(a,b) a##b #define CONCAT2E(a,b) CONCAT2(a,b) #define CONCAT3(a,b,c) a##b##c diff --git a/examples/zippy.c b/examples/zippy.c index 4f793a9..5a5961a 100644 --- a/examples/zippy.c +++ b/examples/zippy.c @@ -13,6 +13,8 @@ static int maxx=400, maxy=400, bpp=4; void blank_framebuffer(char* frame_buffer, int x1, int y1, int x2, int y2); /* displays a red bar, a green bar, and a blue bar */ void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2); +void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2); +void draw_primary_colours_generic_fast(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2); void linecount (char* frame_buffer); /* handles mouse events */ void on_mouse_event (int buttonMask,int x,int y,rfbClientPtr cl); @@ -76,7 +78,7 @@ void draw_primary_colors (char* frame_buffer, int x1, int y1, int x2, int y2) } /* Dscho's versions (slower, but works for bpp != 3 or 4) */ -static void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2) +void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2,int y2) { rfbPixelFormat f=s->serverFormat; int i,j; @@ -90,7 +92,7 @@ static void draw_primary_colours_generic(rfbScreenInfoPtr s,int x1,int y1,int x2 rfbDrawPixel(s,i,j,f.blueMax<serverFormat; int i,j,y3=(y1*2+y2)/3,y4=(y1+y2*2)/3; diff --git a/libvncserver/zrle.c b/libvncserver/zrle.c index e1f1447..80f629c 100644 --- a/libvncserver/zrle.c +++ b/libvncserver/zrle.c @@ -96,9 +96,6 @@ * data. */ -/* TODO: put into rfbClient struct */ - -static char zrleBeforeBuf[rfbZRLETileWidth * rfbZRLETileHeight * 4 + 4]; /* * rfbSendRectEncodingZRLE - send a given rectangle using ZRLE encoding. diff --git a/libvncserver/zrleencodetemplate.c b/libvncserver/zrleencodetemplate.c index 3a6f117..b6de755 100644 --- a/libvncserver/zrleencodetemplate.c +++ b/libvncserver/zrleencodetemplate.c @@ -84,8 +84,6 @@ static const int bitsPerPackedPixel[] = { 0, 1, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }; -static zrlePaletteHelper paletteHelper; - #endif /* ZRLE_ONCE */ void ZRLE_ENCODE_TILE (PIXEL_T* data, int w, int h, zrleOutStream* os, @@ -144,11 +142,7 @@ void ZRLE_ENCODE_TILE(PIXEL_T* data, int w, int h, zrleOutStream* os, PIXEL_T* end = ptr + h * w; *end = ~*(end-1); /* one past the end is different so the while loop ends */ -#if 0 - ph = &paletteHelper; -#else ph = (zrlePaletteHelper *) paletteHelper; -#endif zrlePaletteHelperInit(ph); while (ptr < end) { -- cgit v1.2.3 From fe1ca16e9b75b5f38ab374c8dfff92d2c3ea4532 Mon Sep 17 00:00:00 2001 From: Christian Beier Date: Thu, 17 Mar 2011 14:43:55 +0100 Subject: Fix (most) MinGW32 compiler warnings. --- examples/rotate.c | 30 +++++++++++++++--------------- examples/rotatetemplate.c | 10 +++++----- examples/vncev.c | 3 ++- libvncclient/listen.c | 1 + libvncclient/rfbproto.c | 2 ++ libvncclient/ultra.c | 6 +++--- libvncclient/zrle.c | 2 +- libvncserver/rfbserver.c | 4 ++-- libvncserver/ultra.c | 4 ++-- 9 files changed, 33 insertions(+), 29 deletions(-) (limited to 'examples') diff --git a/examples/rotate.c b/examples/rotate.c index e552e4a..028de8c 100644 --- a/examples/rotate.c +++ b/examples/rotate.c @@ -10,22 +10,22 @@ #define FUNCNAME rfbRotate #define FUNC(i, j) (h - 1 - j + i * h) #define SWAPDIMENSIONS -#define OUT 8 +#define OUTBITS 8 #include "rotatetemplate.c" -#define OUT 16 +#define OUTBITS 16 #include "rotatetemplate.c" -#define OUT 32 +#define OUTBITS 32 #include "rotatetemplate.c" #undef FUNCNAME #undef FUNC #define FUNCNAME rfbRotateCounterClockwise #define FUNC(i, j) (j + (w - 1 - i) * h) -#define OUT 8 +#define OUTBITS 8 #include "rotatetemplate.c" -#define OUT 16 +#define OUTBITS 16 #include "rotatetemplate.c" -#define OUT 32 +#define OUTBITS 32 #include "rotatetemplate.c" #undef FUNCNAME #undef FUNC @@ -33,33 +33,33 @@ #define FUNCNAME rfbFlipHorizontally #define FUNC(i, j) ((w - 1 - i) + j * w) -#define OUT 8 +#define OUTBITS 8 #include "rotatetemplate.c" -#define OUT 16 +#define OUTBITS 16 #include "rotatetemplate.c" -#define OUT 32 +#define OUTBITS 32 #include "rotatetemplate.c" #undef FUNCNAME #undef FUNC #define FUNCNAME rfbFlipVertically #define FUNC(i, j) (i + (h - 1 - j) * w) -#define OUT 8 +#define OUTBITS 8 #include "rotatetemplate.c" -#define OUT 16 +#define OUTBITS 16 #include "rotatetemplate.c" -#define OUT 32 +#define OUTBITS 32 #include "rotatetemplate.c" #undef FUNCNAME #undef FUNC #define FUNCNAME rfbRotateHundredAndEighty #define FUNC(i, j) ((w - 1 - i) + (h - 1 - j) * w) -#define OUT 8 +#define OUTBITS 8 #include "rotatetemplate.c" -#define OUT 16 +#define OUTBITS 16 #include "rotatetemplate.c" -#define OUT 32 +#define OUTBITS 32 #include "rotatetemplate.c" #undef FUNCNAME #undef FUNC diff --git a/examples/rotatetemplate.c b/examples/rotatetemplate.c index 57dc052..0d7e007 100644 --- a/examples/rotatetemplate.c +++ b/examples/rotatetemplate.c @@ -1,5 +1,5 @@ -#define OUT_T CONCAT3E(uint,OUT,_t) -#define FUNCTION CONCAT2E(FUNCNAME,OUT) +#define OUT_T CONCAT3E(uint,OUTBITS,_t) +#define FUNCTION CONCAT2E(FUNCNAME,OUTBITS) static void FUNCTION(rfbScreenInfoPtr screen) { @@ -16,7 +16,7 @@ static void FUNCTION(rfbScreenInfoPtr screen) #ifdef SWAPDIMENSIONS screen->width = h; - screen->paddedWidthInBytes = h * OUT / 8; + screen->paddedWidthInBytes = h * OUTBITS / 8; screen->height = w; { @@ -31,7 +31,7 @@ static void FUNCTION(rfbScreenInfoPtr screen) rfbMarkRectAsModified(screen, 0, 0, screen->width, screen->height); } -#if OUT == 32 +#if OUTBITS == 32 void FUNCNAME(rfbScreenInfoPtr screen) { if (screen->serverFormat.bitsPerPixel == 32) CONCAT2E(FUNCNAME,32)(screen); @@ -48,5 +48,5 @@ void FUNCNAME(rfbScreenInfoPtr screen) { #endif #undef FUNCTION -#undef OUT +#undef OUTBITS diff --git a/examples/vncev.c b/examples/vncev.c index ba9441a..b185746 100644 --- a/examples/vncev.c +++ b/examples/vncev.c @@ -99,7 +99,8 @@ static enum rfbNewClientAction newclient(rfbClientPtr cl) { char buffer[1024]; struct sockaddr_in addr; - unsigned int len=sizeof(addr),ip; + socklen_t len=sizeof(addr); + unsigned int ip; getpeername(cl->sock,(struct sockaddr*)&addr,&len); ip=ntohl(addr.sin_addr.s_addr); diff --git a/libvncclient/listen.c b/libvncclient/listen.c index 637abb1..58275a0 100644 --- a/libvncclient/listen.c +++ b/libvncclient/listen.c @@ -29,6 +29,7 @@ #ifdef __MINGW32__ #define close closesocket #include +#undef max #else #include #include diff --git a/libvncclient/rfbproto.c b/libvncclient/rfbproto.c index dd06ebd..d10e8a6 100644 --- a/libvncclient/rfbproto.c +++ b/libvncclient/rfbproto.c @@ -1045,7 +1045,9 @@ InitialiseRFBConnection(rfbClient* client) rfbProtocolVersionMsg pv; int major,minor; uint32_t authScheme; +#ifdef LIBVNCSERVER_WITH_CLIENT_TLS uint32_t subAuthScheme; +#endif rfbClientInitMsg ci; /* if the connection is immediately closed, don't report anything, so diff --git a/libvncclient/ultra.c b/libvncclient/ultra.c index 3be150d..dddb0c0 100644 --- a/libvncclient/ultra.c +++ b/libvncclient/ultra.c @@ -37,7 +37,7 @@ HandleUltraBPP (rfbClient* client, int rx, int ry, int rw, int rh) rfbZlibHeader hdr; int toRead=0; int inflateResult=0; - int uncompressedBytes = (( rw * rh ) * ( BPP / 8 )); + lzo_uint uncompressedBytes = (( rw * rh ) * ( BPP / 8 )); if (!ReadFromRFBServer(client, (char *)&hdr, sz_rfbZlibHeader)) return FALSE; @@ -119,7 +119,7 @@ HandleUltraZipBPP (rfbClient* client, int rx, int ry, int rw, int rh) int toRead=0; int inflateResult=0; unsigned char *ptr=NULL; - int uncompressedBytes = ry + (rw * 65535); + lzo_uint uncompressedBytes = ry + (rw * 65535); unsigned int numCacheRects = rx; if (!ReadFromRFBServer(client, (char *)&hdr, sz_rfbZlibHeader)) @@ -170,7 +170,7 @@ HandleUltraZipBPP (rfbClient* client, int rx, int ry, int rw, int rh) uncompressedBytes = client->raw_buffer_size; inflateResult = lzo1x_decompress( (lzo_byte *)client->ultra_buffer, toRead, - (lzo_byte *)client->raw_buffer, (lzo_uintp) &uncompressedBytes, NULL); + (lzo_byte *)client->raw_buffer, &uncompressedBytes, NULL); if ( inflateResult != LZO_E_OK ) { rfbClientLog("ultra decompress returned error: %d\n", diff --git a/libvncclient/zrle.c b/libvncclient/zrle.c index 16fc091..a14ad44 100644 --- a/libvncclient/zrle.c +++ b/libvncclient/zrle.c @@ -363,7 +363,7 @@ static int HandleZRLETile(rfbClient* client, { return -8; } - else if( (type >= 130)&&(type <= 255) ) /* palette RLE */ + else if( type >= 130 ) /* palette RLE */ { CARDBPP palette[128]; int i,j; diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c index 73be34c..70ae88b 100644 --- a/libvncserver/rfbserver.c +++ b/libvncserver/rfbserver.c @@ -1657,7 +1657,7 @@ rfbBool rfbProcessFileTransfer(rfbClientPtr cl, uint8_t contentType, uint8_t con #ifdef LIBVNCSERVER_HAVE_LIBZ /* compressed packet */ nRet = uncompress(compBuff,&nRawBytes,(const unsigned char*)buffer, length); - retval=write(cl->fileTransfer.fd, compBuff, nRawBytes); + retval=write(cl->fileTransfer.fd, (char*)compBuff, nRawBytes); #else /* Write the file out as received... */ retval=write(cl->fileTransfer.fd, buffer, length); @@ -3265,7 +3265,7 @@ void rfbNewUDPConnection(rfbScreenInfoPtr rfbScreen, int sock) { - if (write(sock, &ptrAcceleration, 1) < 0) { + if (write(sock, (char*) &ptrAcceleration, 1) < 0) { rfbLogPerror("rfbNewUDPConnection: write"); } } diff --git a/libvncserver/ultra.c b/libvncserver/ultra.c index 9a3b14f..47fab55 100644 --- a/libvncserver/ultra.c +++ b/libvncserver/ultra.c @@ -50,7 +50,7 @@ rfbSendOneRectEncodingUltra(rfbClientPtr cl, + (x * (cl->scaledScreen->bitsPerPixel / 8))); int maxRawSize; - int maxCompSize; + lzo_uint maxCompSize; maxRawSize = (w * h * (cl->format.bitsPerPixel / 8)); @@ -92,7 +92,7 @@ rfbSendOneRectEncodingUltra(rfbClientPtr cl, } /* Perform the compression here. */ - deflateResult = lzo1x_1_compress((unsigned char *)cl->beforeEncBuf, (lzo_uint)(w * h * (cl->format.bitsPerPixel / 8)), (unsigned char *)cl->afterEncBuf, (lzo_uint *)&maxCompSize, cl->lzoWrkMem); + deflateResult = lzo1x_1_compress((unsigned char *)cl->beforeEncBuf, (lzo_uint)(w * h * (cl->format.bitsPerPixel / 8)), (unsigned char *)cl->afterEncBuf, &maxCompSize, cl->lzoWrkMem); /* maxCompSize now contains the compressed size */ /* Find the total size of the resulting compressed data. */ -- cgit v1.2.3