mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 20:25:39 +00:00
[MSTSC]
- Fix some corner cases for settings parsing (empty values, values containing delimiters). - If provided, take port number into account. svn path=/trunk/; revision=55003
This commit is contained in:
parent
0102072a69
commit
d6606f146d
2 changed files with 28 additions and 6 deletions
|
@ -230,6 +230,7 @@ ParseSettings(PRDPSETTINGS pRdpSettings,
|
||||||
{
|
{
|
||||||
LPWSTR lpStr = lpBuffer;
|
LPWSTR lpStr = lpBuffer;
|
||||||
WCHAR szSeps[] = L":\r\n";
|
WCHAR szSeps[] = L":\r\n";
|
||||||
|
WCHAR szNewline[] = L"\r\n";
|
||||||
LPWSTR lpToken;
|
LPWSTR lpToken;
|
||||||
BOOL bFound;
|
BOOL bFound;
|
||||||
INT i;
|
INT i;
|
||||||
|
@ -258,7 +259,7 @@ ParseSettings(PRDPSETTINGS pRdpSettings,
|
||||||
else if (lpToken[0] == L's')
|
else if (lpToken[0] == L's')
|
||||||
{
|
{
|
||||||
pRdpSettings->pSettings[i].Type = lpToken[0];
|
pRdpSettings->pSettings[i].Type = lpToken[0];
|
||||||
lpToken = wcstok(NULL, szSeps);
|
lpToken = wcstok(NULL, szNewline);
|
||||||
if (lpToken != NULL)
|
if (lpToken != NULL)
|
||||||
wcscpy(pRdpSettings->pSettings[i].Value.s, lpToken);
|
wcscpy(pRdpSettings->pSettings[i].Value.s, lpToken);
|
||||||
}
|
}
|
||||||
|
@ -268,10 +269,7 @@ ParseSettings(PRDPSETTINGS pRdpSettings,
|
||||||
|
|
||||||
/* move past the type and value */
|
/* move past the type and value */
|
||||||
if (!bFound)
|
if (!bFound)
|
||||||
{
|
lpToken = wcstok(NULL, szNewline);
|
||||||
lpToken = wcstok(NULL, szSeps);
|
|
||||||
lpToken = wcstok(NULL, szSeps);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* move to next key */
|
/* move to next key */
|
||||||
lpToken = wcstok(NULL, szSeps);
|
lpToken = wcstok(NULL, szSeps);
|
||||||
|
|
|
@ -958,6 +958,29 @@ mi_paint_rect(char * data, int width, int height, int x, int y, int cx, int cy)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static INT
|
||||||
|
GetPortNumber(PCHAR szAddress)
|
||||||
|
{
|
||||||
|
PCHAR szPort;
|
||||||
|
INT iPort = TCP_PORT_RDP;
|
||||||
|
|
||||||
|
szPort = strtok(szAddress, ":");
|
||||||
|
|
||||||
|
if (szPort != NULL)
|
||||||
|
{
|
||||||
|
szPort = strtok(NULL, ":");
|
||||||
|
|
||||||
|
if (szPort != NULL)
|
||||||
|
{
|
||||||
|
iPort = atoi(szPort);
|
||||||
|
|
||||||
|
if (iPort <= 0 || iPort > 0xFFFF)
|
||||||
|
iPort = TCP_PORT_RDP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return iPort;
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL
|
static BOOL
|
||||||
ParseCommandLine(LPWSTR lpCmdLine,
|
ParseCommandLine(LPWSTR lpCmdLine,
|
||||||
|
@ -1051,8 +1074,9 @@ wWinMain(HINSTANCE hInstance,
|
||||||
|
|
||||||
uni_to_str(szValue, GetStringFromSettings(pRdpSettings, L"full address"));
|
uni_to_str(szValue, GetStringFromSettings(pRdpSettings, L"full address"));
|
||||||
|
|
||||||
|
/* GetPortNumber also removes possible trailing port number from address */
|
||||||
|
g_tcp_port_rdp = GetPortNumber(szValue);
|
||||||
strcpy(g_servername, szValue);
|
strcpy(g_servername, szValue);
|
||||||
//g_port = 3389;
|
|
||||||
strcpy(g_username, "");
|
strcpy(g_username, "");
|
||||||
strcpy(g_password, "");
|
strcpy(g_password, "");
|
||||||
g_server_depth = GetIntegerFromSettings(pRdpSettings, L"session bpp");
|
g_server_depth = GetIntegerFromSettings(pRdpSettings, L"session bpp");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue