• Christian Beier's avatar
    Fix potential memory corruption in libvncclient. · 95efcfbf
    Christian Beier authored
    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 0x0.
    95efcfbf
Name
Last commit
Last update
..
Makefile.am Loading commit data...
corre.c Loading commit data...
cursor.c Loading commit data...
h264.c Loading commit data...
hextile.c Loading commit data...
listen.c Loading commit data...
rfbproto.c Loading commit data...
rre.c Loading commit data...
sockets.c Loading commit data...
tight.c Loading commit data...
tls.h Loading commit data...
tls_gnutls.c Loading commit data...
tls_none.c Loading commit data...
tls_openssl.c Loading commit data...
ultra.c Loading commit data...
vncviewer.c Loading commit data...
zlib.c Loading commit data...
zrle.c Loading commit data...