From: Armin Novak Date: Thu, 26 Sep 2019 14:58:41 +0000 (+0200) Subject: Trim all RDP file string options except passwords. X-Git-Tag: 2.0.0~331^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c904a4c5cd050d7a24739278276938396a5adc01;p=platform%2Fupstream%2Ffreerdp.git Trim all RDP file string options except passwords. --- diff --git a/client/common/file.c b/client/common/file.c index 22858d0..3be1a23 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -22,6 +22,7 @@ #endif #include +#include #include #include @@ -579,6 +580,86 @@ BOOL freerdp_client_parse_rdp_file_buffer(rdpFile* file, const BYTE* buffer, siz return freerdp_client_parse_rdp_file_buffer_ex(file, buffer, size, NULL); } +static BOOL trim(char** strptr) +{ + char* start; + char* str; + char* end; + + start = str = *strptr; + if (!str) + return TRUE; + if (!(~((size_t)str))) + return TRUE; + end = str + strlen(str) - 1; + + while(isspace(*str)) + str++; + + while((end > str) && isspace(*end)) + end--; + end[1] = '\0'; + if (start == str) + *strptr = str; + else + { + *strptr = _strdup(str); + free(start); + return *strptr != NULL; + } + + return TRUE; +} + +static BOOL trim_strings(rdpFile* file) +{ + if (!trim(&file->Username)) + return FALSE; + if (!trim(&file->Domain)) + return FALSE; + if (!trim(&file->AlternateFullAddress)) + return FALSE; + if (!trim(&file->FullAddress)) + return FALSE; + if (!trim(&file->UsbDevicesToRedirect)) + return FALSE; + if (!trim(&file->LoadBalanceInfo)) + return FALSE; + if (!trim(&file->GatewayHostname)) + return FALSE; + if (!trim(&file->GatewayAccessToken)) + return FALSE; + if (!trim(&file->RemoteApplicationName)) + return FALSE; + if (!trim(&file->RemoteApplicationIcon)) + return FALSE; + if (!trim(&file->RemoteApplicationProgram)) + return FALSE; + if (!trim(&file->RemoteApplicationFile)) + return FALSE; + if (!trim(&file->RemoteApplicationGuid)) + return FALSE; + if (!trim(&file->RemoteApplicationCmdLine)) + return FALSE; + if (!trim(&file->AlternateShell)) + return FALSE; + if (!trim(&file->ShellWorkingDirectory)) + return FALSE; + if (!trim(&file->DrivesToRedirect)) + return FALSE; + if (!trim(&file->DevicesToRedirect)) + return FALSE; + if (!trim(&file->DevicesToRedirect)) + return FALSE; + if (!trim(&file->WinPosStr)) + return FALSE; + if (!trim(&file->PreconnectionBlob)) + return FALSE; + if (!trim(&file->KdcProxyName)) + return FALSE; + return TRUE; +} + BOOL freerdp_client_parse_rdp_file_buffer_ex(rdpFile* file, const BYTE* buffer, size_t size, rdp_file_fkt_parse parse) { @@ -690,7 +771,7 @@ BOOL freerdp_client_parse_rdp_file_buffer_ex(rdpFile* file, const BYTE* buffer, index++; } - rc = TRUE; + rc = trim_strings(file); fail: free(copy); return rc;