Skip to content

Commit 900758e

Browse files
ObermayrJohannbk138
authored andcommitted
libvncclient: fix possible memory leak
in some parts of the code it was possible to lose track of resources. Cleaning them up fixes the possibility for memory leaks.
1 parent f135856 commit 900758e

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

libvncclient/cursor.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ rfbBool HandleCursorShape(rfbClient* client,int xhot, int yhot, int width, int h
146146
return FALSE;
147147
}
148148

149+
if(client->rcMask)
150+
free(client->rcMask);
151+
149152
client->rcMask = malloc((size_t)width * height);
150153
if (client->rcMask == NULL) {
151154
free(client->rcSource);

libvncclient/vncviewer.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,13 @@ void rfbClientCleanup(rfbClient* client) {
524524
client->decompStream.msg != NULL)
525525
rfbClientLog("inflateEnd: %s\n", client->decompStream.msg );
526526
}
527+
528+
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
529+
if(client->tjhnd){
530+
tjDestroy(client->tjhnd);
531+
client->tjhnd = NULL;
532+
}
533+
#endif /* LIBVNCSERVER_HAVE_LIBJPEG */
527534
#endif
528535

529536
if (client->ultra_buffer)
@@ -540,7 +547,8 @@ void rfbClientCleanup(rfbClient* client) {
540547
client->clientData = next;
541548
}
542549

543-
free(client->vncRec);
550+
if(client->vncRec)
551+
free(client->vncRec);
544552

545553
if (client->sock != RFB_INVALID_SOCKET)
546554
rfbCloseSocket(client->sock);
@@ -552,10 +560,16 @@ void rfbClientCleanup(rfbClient* client) {
552560
free(client->destHost);
553561
if (client->clientAuthSchemes)
554562
free(client->clientAuthSchemes);
563+
if(client->rcSource)
564+
free(client->rcSource);
565+
if(client->rcMask)
566+
free(client->rcMask);
555567

556568
#ifdef LIBVNCSERVER_HAVE_SASL
557569
if (client->saslSecret)
558570
free(client->saslSecret);
571+
if (client->saslconn)
572+
sasl_dispose(&client->saslconn);
559573
#endif /* LIBVNCSERVER_HAVE_SASL */
560574

561575
#ifdef WIN32

0 commit comments

Comments
 (0)