Commit 2f9836d8 authored by Vic Lee's avatar Vic Lee Committed by Johannes Schindelin

Fix bug for logging unsupported security types

Signed-off-by: 's avatarVic Lee <llyzs@163.com>
parent 4e1aba74
...@@ -531,7 +531,8 @@ InitialiseRFBConnection(rfbClient* client) ...@@ -531,7 +531,8 @@ InitialiseRFBConnection(rfbClient* client)
uint8_t count=0; uint8_t count=0;
uint8_t loop=0; uint8_t loop=0;
uint8_t flag=0; uint8_t flag=0;
uint8_t tAuth=0; uint8_t tAuth[256];
char buf1[500],buf2[10];
if (!ReadFromRFBServer(client, (char *)&count, 1)) return FALSE; if (!ReadFromRFBServer(client, (char *)&count, 1)) return FALSE;
...@@ -549,23 +550,42 @@ InitialiseRFBConnection(rfbClient* client) ...@@ -549,23 +550,42 @@ InitialiseRFBConnection(rfbClient* client)
free(reason); free(reason);
return FALSE; return FALSE;
} }
if (count>sizeof(tAuth))
{
rfbClientLog("%d security types are too many; maximum is %d\n", count, sizeof(tAuth));
return FALSE;
}
rfbClientLog("We have %d security types to read\n", count); rfbClientLog("We have %d security types to read\n", count);
authScheme=0;
/* now, we have a list of available security types to read ( uint8_t[] ) */ /* now, we have a list of available security types to read ( uint8_t[] ) */
for (loop=0;loop<count;loop++) for (loop=0;loop<count;loop++)
{ {
if (!ReadFromRFBServer(client, (char *)&tAuth, 1)) return FALSE; if (!ReadFromRFBServer(client, (char *)&tAuth[loop], 1)) return FALSE;
rfbClientLog("%d) Received security type %d\n", loop, tAuth); rfbClientLog("%d) Received security type %d\n", loop, tAuth[loop]);
if ((flag==0) && ((tAuth==rfbVncAuth) || (tAuth==rfbNoAuth))) if ((flag==0) && ((tAuth[loop]==rfbVncAuth) || (tAuth[loop]==rfbNoAuth)))
{ {
flag++; flag++;
authScheme=tAuth; authScheme=tAuth[loop];
rfbClientLog("Selecting security type %d (%d/%d in the list)\n", authScheme, loop, count); rfbClientLog("Selecting security type %d (%d/%d in the list)\n", authScheme, loop, count);
/* send back a single byte indicating which security type to use */ /* send back a single byte indicating which security type to use */
if (!WriteToRFBServer(client, (char *)&tAuth, 1)) return FALSE; if (!WriteToRFBServer(client, (char *)&tAuth[loop], 1)) return FALSE;
} }
} }
if (authScheme==0)
{
memset(buf1, 0, sizeof(buf1));
for (loop=0;loop<count;loop++)
{
if (strlen(buf1)>=sizeof(buf1)-1) break;
snprintf(buf2, sizeof(buf2), (loop>0 ? ", %d" : "%d"), (int)tAuth[loop]);
strncat(buf1, buf2, sizeof(buf1)-strlen(buf1)-1);
}
rfbClientLog("Unknown authentication scheme from VNC server: %s\n",
buf1);
return FALSE;
}
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment