Merge pull request #10607 from akallabeth/warn

Warnings fixed
This commit is contained in:
akallabeth 2024-09-15 10:43:54 +02:00 committed by GitHub
commit 039e24bf48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 316 additions and 216 deletions

View File

@ -514,19 +514,19 @@ typedef struct
*/ */
static UINT handle_hotplug(rdpdrPlugin* rdpdr) static UINT handle_hotplug(rdpdrPlugin* rdpdr)
{ {
struct dirent* pDirent; struct dirent* pDirent = NULL;
DIR* pDir; char fullpath[PATH_MAX] = { 0 };
char fullpath[PATH_MAX];
char* szdir = (char*)"/Volumes"; char* szdir = (char*)"/Volumes";
struct stat buf; struct stat buf = { 0 };
hotplug_dev dev_array[MAX_USB_DEVICES]; hotplug_dev dev_array[MAX_USB_DEVICES] = { 0 };
int count; int count = 0;
DEVICE_DRIVE_EXT* device_ext; DEVICE_DRIVE_EXT* device_ext = NULL;
ULONG_PTR* keys = NULL; ULONG_PTR* keys = NULL;
int size = 0; int size = 0;
UINT error; UINT error = ERROR_INTERNAL_ERROR;
UINT32 ids[1]; UINT32 ids[1];
pDir = opendir(szdir);
DIR* pDir = opendir(szdir);
if (pDir == NULL) if (pDir == NULL)
{ {

View File

@ -20,6 +20,7 @@
#include <errno.h> #include <errno.h>
#include <winpr/assert.h> #include <winpr/assert.h>
#include <winpr/wtypes.h>
#include <winpr/crt.h> #include <winpr/crt.h>
#include <winpr/wlog.h> #include <winpr/wlog.h>
@ -199,8 +200,11 @@ static BOOL rdpear_send_payload(RDPEAR_PLUGIN* rdpear, IWTSVirtualChannelCallbac
goto out; goto out;
const size_t unencodedLen = Stream_GetPosition(unencodedContent); const size_t unencodedLen = Stream_GetPosition(unencodedContent);
if (unencodedLen > ULONG_MAX)
#if UINT32_MAX < SIZE_MAX
if (unencodedLen > UINT32_MAX)
goto out; goto out;
#endif
SecBuffer inBuffer = { (ULONG)unencodedLen, SECBUFFER_DATA, Stream_Buffer(unencodedContent) }; SecBuffer inBuffer = { (ULONG)unencodedLen, SECBUFFER_DATA, Stream_Buffer(unencodedContent) };
@ -223,8 +227,10 @@ static BOOL rdpear_send_payload(RDPEAR_PLUGIN* rdpear, IWTSVirtualChannelCallbac
Stream_Write(finalStream, cryptedBuffer.pvBuffer, cryptedBuffer.cbBuffer); Stream_Write(finalStream, cryptedBuffer.pvBuffer, cryptedBuffer.cbBuffer);
const size_t pos = Stream_GetPosition(finalStream); const size_t pos = Stream_GetPosition(finalStream);
if (pos > ULONG_MAX) #if UINT32_MAX < SIZE_MAX
if (pos > UINT32_MAX)
goto out; goto out;
#endif
UINT status = UINT status =
callback->channel->Write(callback->channel, (ULONG)pos, Stream_Buffer(finalStream), NULL); callback->channel->Write(callback->channel, (ULONG)pos, Stream_Buffer(finalStream), NULL);

View File

@ -54,8 +54,10 @@ void mac_set_view_size(rdpContext *context, MRDPView *view);
if (freerdp_settings_get_bool(settings, FreeRDP_Fullscreen)) if (freerdp_settings_get_bool(settings, FreeRDP_Fullscreen))
{ {
freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, screenFrame.size.width); (void)freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth,
freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, screenFrame.size.height); screenFrame.size.width);
(void)freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight,
screenFrame.size.height);
} }
PubSub_SubscribeConnectionResult(context->pubSub, AppDelegate_ConnectionResultEventHandler); PubSub_SubscribeConnectionResult(context->pubSub, AppDelegate_ConnectionResultEventHandler);

View File

@ -19,7 +19,7 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
int main(int argc, const char *argv[]) int main(int argc, char *argv[])
{ {
return NSApplicationMain(argc, argv); return NSApplicationMain(argc, argv);
} }

View File

@ -264,16 +264,19 @@ static BOOL wf_pre_connect(freerdp* instance)
if (desktopWidth != freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth)) if (desktopWidth != freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth))
{ {
freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, desktopWidth); if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, desktopWidth))
return FALSE;
} }
if (desktopHeight != freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight)) if (desktopHeight != freerdp_settings_get_uint32(settings, FreeRDP_DesktopHeight))
{ {
freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, desktopHeight); if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, desktopHeight))
return FALSE;
} }
rc = freerdp_keyboard_init(freerdp_settings_get_uint32(settings, FreeRDP_KeyboardLayout)); rc = freerdp_keyboard_init(freerdp_settings_get_uint32(settings, FreeRDP_KeyboardLayout));
freerdp_settings_set_uint32(settings, FreeRDP_KeyboardLayout, rc); if (!freerdp_settings_set_uint32(settings, FreeRDP_KeyboardLayout, rc))
return FALSE;
PubSub_SubscribeChannelConnected(instance->context->pubSub, wf_OnChannelConnectedEventHandler); PubSub_SubscribeChannelConnected(instance->context->pubSub, wf_OnChannelConnectedEventHandler);
PubSub_SubscribeChannelDisconnected(instance->context->pubSub, PubSub_SubscribeChannelDisconnected(instance->context->pubSub,
wf_OnChannelDisconnectedEventHandler); wf_OnChannelDisconnectedEventHandler);
@ -1338,7 +1341,8 @@ static BOOL wfreerdp_client_new(freerdp* instance, rdpContext* context)
instance->AuthenticateEx = wf_authenticate_ex; instance->AuthenticateEx = wf_authenticate_ex;
#ifdef WITH_WINDOWS_CERT_STORE #ifdef WITH_WINDOWS_CERT_STORE
freerdp_settings_set_bool(context->settings, FreeRDP_CertificateCallbackPreferPEM, TRUE); if (!freerdp_settings_set_bool(context->settings, FreeRDP_CertificateCallbackPreferPEM, TRUE))
return FALSE;
#endif #endif
if (!wfc->isConsole) if (!wfc->isConsole)

View File

@ -360,8 +360,9 @@ static void wf_send_resize(wfContext* wfc)
{ {
WLog_ERR("", "SendMonitorLayout failed."); WLog_ERR("", "SendMonitorLayout failed.");
} }
freerdp_settings_set_uint32(settings, FreeRDP_SmartSizingWidth, targetWidth); (void)freerdp_settings_set_uint32(settings, FreeRDP_SmartSizingWidth, targetWidth);
freerdp_settings_set_uint32(settings, FreeRDP_SmartSizingHeight, targetHeight); (void)freerdp_settings_set_uint32(settings, FreeRDP_SmartSizingHeight,
targetHeight);
} }
wfc->lastSentDate = GetTickCount64(); wfc->lastSentDate = GetTickCount64();
} }
@ -725,7 +726,7 @@ LRESULT CALLBACK wf_event_proc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam
{ {
HMENU hMenu = GetSystemMenu(wfc->hwnd, FALSE); HMENU hMenu = GetSystemMenu(wfc->hwnd, FALSE);
const BOOL rc = freerdp_settings_get_bool(settings, FreeRDP_SmartSizing); const BOOL rc = freerdp_settings_get_bool(settings, FreeRDP_SmartSizing);
freerdp_settings_set_bool(settings, FreeRDP_SmartSizing, !rc); (void)freerdp_settings_set_bool(settings, FreeRDP_SmartSizing, !rc);
CheckMenuItem(hMenu, SYSCOMMAND_ID_SMARTSIZING, CheckMenuItem(hMenu, SYSCOMMAND_ID_SMARTSIZING,
freerdp_settings_get_bool(settings, FreeRDP_SmartSizing) freerdp_settings_get_bool(settings, FreeRDP_SmartSizing)
? MF_CHECKED ? MF_CHECKED
@ -778,7 +779,8 @@ LRESULT CALLBACK wf_event_proc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam
case WM_SETFOCUS: case WM_SETFOCUS:
DEBUG_KBD("getting focus %X", hWnd); DEBUG_KBD("getting focus %X", hWnd);
freerdp_settings_set_bool(wfc->common.context.settings, FreeRDP_SuspendInput, FALSE); (void)freerdp_settings_set_bool(wfc->common.context.settings, FreeRDP_SuspendInput,
FALSE);
if (alt_ctrl_down()) if (alt_ctrl_down())
g_flipping_in = TRUE; g_flipping_in = TRUE;
@ -788,7 +790,8 @@ LRESULT CALLBACK wf_event_proc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam
break; break;
case WM_KILLFOCUS: case WM_KILLFOCUS:
freerdp_settings_set_bool(wfc->common.context.settings, FreeRDP_SuspendInput, TRUE); (void)freerdp_settings_set_bool(wfc->common.context.settings, FreeRDP_SuspendInput,
TRUE);
if (g_focus_hWnd == hWnd && wfc && !wfc->fullscreen) if (g_focus_hWnd == hWnd && wfc && !wfc->fullscreen)
{ {

View File

@ -254,21 +254,28 @@ static BOOL freerdp_client_settings_post_process(rdpSettings* settings)
* that the rdp file also triggers this functionality */ * that the rdp file also triggers this functionality */
if (freerdp_settings_get_bool(settings, FreeRDP_SpanMonitors)) if (freerdp_settings_get_bool(settings, FreeRDP_SpanMonitors))
{ {
freerdp_settings_set_bool(settings, FreeRDP_UseMultimon, TRUE); if (!freerdp_settings_set_bool(settings, FreeRDP_UseMultimon, TRUE))
freerdp_settings_set_bool(settings, FreeRDP_Fullscreen, TRUE); goto out_error;
if (!freerdp_settings_set_bool(settings, FreeRDP_Fullscreen, TRUE))
goto out_error;
} }
else if (freerdp_settings_get_bool(settings, FreeRDP_UseMultimon)) else if (freerdp_settings_get_bool(settings, FreeRDP_UseMultimon))
{ {
freerdp_settings_set_bool(settings, FreeRDP_Fullscreen, TRUE); if (!freerdp_settings_set_bool(settings, FreeRDP_Fullscreen, TRUE))
goto out_error;
} }
/* deal with the smartcard / smartcard logon stuff */ /* deal with the smartcard / smartcard logon stuff */
if (freerdp_settings_get_bool(settings, FreeRDP_SmartcardLogon)) if (freerdp_settings_get_bool(settings, FreeRDP_SmartcardLogon))
{ {
freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, TRUE); if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, TRUE))
freerdp_settings_set_bool(settings, FreeRDP_RedirectSmartCards, TRUE); goto out_error;
freerdp_settings_set_bool(settings, FreeRDP_DeviceRedirection, TRUE); if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectSmartCards, TRUE))
freerdp_settings_set_bool(settings, FreeRDP_PasswordIsSmartcardPin, TRUE); goto out_error;
if (!freerdp_settings_set_bool(settings, FreeRDP_DeviceRedirection, TRUE))
goto out_error;
if (!freerdp_settings_set_bool(settings, FreeRDP_PasswordIsSmartcardPin, TRUE))
goto out_error;
} }
return TRUE; return TRUE;

View File

@ -4195,9 +4195,12 @@ static int freerdp_client_settings_parse_command_line_arguments_int(
else else
compatibility = freerdp_client_detect_command_line(argc - 1, &argv[1], &flags); compatibility = freerdp_client_detect_command_line(argc - 1, &argv[1], &flags);
freerdp_settings_set_string(settings, FreeRDP_ProxyHostname, NULL); if (!freerdp_settings_set_string(settings, FreeRDP_ProxyHostname, NULL))
freerdp_settings_set_string(settings, FreeRDP_ProxyUsername, NULL); return -1;
freerdp_settings_set_string(settings, FreeRDP_ProxyPassword, NULL); if (!freerdp_settings_set_string(settings, FreeRDP_ProxyUsername, NULL))
return -1;
if (!freerdp_settings_set_string(settings, FreeRDP_ProxyPassword, NULL))
return -1;
if (compatibility) if (compatibility)
{ {
@ -4644,7 +4647,8 @@ static int freerdp_client_settings_parse_command_line_arguments_int(
} }
CommandLineSwitchCase(arg, "disable-output") CommandLineSwitchCase(arg, "disable-output")
{ {
freerdp_settings_set_bool(settings, FreeRDP_DeactivateClientDecoding, enable); if (!freerdp_settings_set_bool(settings, FreeRDP_DeactivateClientDecoding, enable))
return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "home-drive") CommandLineSwitchCase(arg, "home-drive")
{ {

View File

@ -309,8 +309,8 @@ out_free:
{ {
[_params setInt:size.width forKey:@"width"]; [_params setInt:size.width forKey:@"width"];
[_params setInt:size.height forKey:@"height"]; [_params setInt:size.height forKey:@"height"];
freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, size.width); (void)freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, size.width);
freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, size.height); (void)freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, size.height);
} }
} }
@ -320,7 +320,7 @@ out_free:
if (freerdp_settings_get_uint32(settings, FreeRDP_ColorDepth) <= 16) if (freerdp_settings_get_uint32(settings, FreeRDP_ColorDepth) <= 16)
{ {
const UINT32 w = freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth) & (~1); const UINT32 w = freerdp_settings_get_uint32(settings, FreeRDP_DesktopWidth) & (~1);
freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, w); (void)freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, w);
} }
[self performSelectorInBackground:@selector(runSession) withObject:nil]; [self performSelectorInBackground:@selector(runSession) withObject:nil];

View File

@ -793,10 +793,13 @@ static BOOL clear_decompress_bands_data(CLEAR_CONTEXT* WINPR_RESTRICT clear,
if ((y + count) > vBarPixelCount) if ((y + count) > vBarPixelCount)
count = (vBarPixelCount > y) ? (vBarPixelCount - y) : 0; count = (vBarPixelCount > y) ? (vBarPixelCount - y) : 0;
while (count--) if (count > 0)
{ {
FreeRDPWriteColor(dstBuffer, clear->format, colorBkg); while (count--)
dstBuffer += FreeRDPGetBytesPerPixel(clear->format); {
FreeRDPWriteColor(dstBuffer, clear->format, colorBkg);
dstBuffer += FreeRDPGetBytesPerPixel(clear->format);
}
} }
/* /*
@ -836,12 +839,15 @@ static BOOL clear_decompress_bands_data(CLEAR_CONTEXT* WINPR_RESTRICT clear,
y = vBarYOn + vBarShortPixelCount; y = vBarYOn + vBarShortPixelCount;
count = (vBarPixelCount > y) ? (vBarPixelCount - y) : 0; count = (vBarPixelCount > y) ? (vBarPixelCount - y) : 0;
while (count--) if (count > 0)
{ {
if (!FreeRDPWriteColor(dstBuffer, clear->format, colorBkg)) while (count--)
return FALSE; {
if (!FreeRDPWriteColor(dstBuffer, clear->format, colorBkg))
return FALSE;
dstBuffer += FreeRDPGetBytesPerPixel(clear->format); dstBuffer += FreeRDPGetBytesPerPixel(clear->format);
}
} }
vBarEntry->count = vBarPixelCount; vBarEntry->count = vBarPixelCount;

View File

@ -1141,7 +1141,9 @@ static INLINE INT16 progressive_rfx_srl_read(RFX_PROGRESSIVE_UPGRADE_STATE* WINP
mag++; mag++;
} }
return sign ? -1 * mag : mag; if (mag > INT16_MAX)
mag = INT16_MAX;
return (INT16)(sign ? -1 * mag : mag);
} }
static INLINE int static INLINE int

View File

@ -833,9 +833,9 @@ void freerdp_dynamic_channel_collection_free(rdpSettings* settings)
} }
free(settings->DynamicChannelArray); free(settings->DynamicChannelArray);
freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelArraySize, 0); (void)freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelArraySize, 0);
settings->DynamicChannelArray = NULL; settings->DynamicChannelArray = NULL;
freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelCount, 0); (void)freerdp_settings_set_uint32(settings, FreeRDP_DynamicChannelCount, 0);
} }
void freerdp_capability_buffer_free(rdpSettings* settings) void freerdp_capability_buffer_free(rdpSettings* settings)
@ -968,37 +968,41 @@ void freerdp_performance_flags_make(rdpSettings* settings)
if (freerdp_settings_get_bool(settings, FreeRDP_DisableThemes)) if (freerdp_settings_get_bool(settings, FreeRDP_DisableThemes))
PerformanceFlags |= PERF_DISABLE_THEMING; PerformanceFlags |= PERF_DISABLE_THEMING;
freerdp_settings_set_uint32(settings, FreeRDP_PerformanceFlags, PerformanceFlags); (void)freerdp_settings_set_uint32(settings, FreeRDP_PerformanceFlags, PerformanceFlags);
} }
void freerdp_performance_flags_split(rdpSettings* settings) void freerdp_performance_flags_split(rdpSettings* settings)
{ {
freerdp_settings_set_bool(settings, FreeRDP_AllowFontSmoothing, (void)freerdp_settings_set_bool(
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & settings, FreeRDP_AllowFontSmoothing,
PERF_ENABLE_FONT_SMOOTHING) (freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
? TRUE PERF_ENABLE_FONT_SMOOTHING)
: FALSE); ? TRUE
freerdp_settings_set_bool(settings, FreeRDP_AllowDesktopComposition, : FALSE);
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & (void)freerdp_settings_set_bool(
PERF_ENABLE_DESKTOP_COMPOSITION) settings, FreeRDP_AllowDesktopComposition,
? TRUE (freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
: FALSE); PERF_ENABLE_DESKTOP_COMPOSITION)
freerdp_settings_set_bool( ? TRUE
: FALSE);
(void)freerdp_settings_set_bool(
settings, FreeRDP_DisableWallpaper, settings, FreeRDP_DisableWallpaper,
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & PERF_DISABLE_WALLPAPER) (freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & PERF_DISABLE_WALLPAPER)
? TRUE ? TRUE
: FALSE); : FALSE);
freerdp_settings_set_bool(settings, FreeRDP_DisableFullWindowDrag, (void)freerdp_settings_set_bool(
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & settings, FreeRDP_DisableFullWindowDrag,
PERF_DISABLE_FULLWINDOWDRAG) (freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
? TRUE PERF_DISABLE_FULLWINDOWDRAG)
: FALSE); ? TRUE
freerdp_settings_set_bool(settings, FreeRDP_DisableMenuAnims, : FALSE);
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & (void)freerdp_settings_set_bool(
PERF_DISABLE_MENUANIMATIONS) settings, FreeRDP_DisableMenuAnims,
? TRUE (freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) &
: FALSE); PERF_DISABLE_MENUANIMATIONS)
freerdp_settings_set_bool( ? TRUE
: FALSE);
(void)freerdp_settings_set_bool(
settings, FreeRDP_DisableThemes, settings, FreeRDP_DisableThemes,
(freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & PERF_DISABLE_THEMING) (freerdp_settings_get_uint32(settings, FreeRDP_PerformanceFlags) & PERF_DISABLE_THEMING)
? TRUE ? TRUE

View File

@ -326,12 +326,12 @@ void freerdp_settings_free_keys(rdpSettings* dst, BOOL cleanup)
switch (cur->type) switch (cur->type)
{ {
case FREERDP_SETTINGS_TYPE_STRING: /* strings */ case FREERDP_SETTINGS_TYPE_STRING: /* strings */
freerdp_settings_set_string_copy_(dst, (FreeRDP_Settings_Keys_String)cur->id, NULL, (void)freerdp_settings_set_string_copy_(dst, (FreeRDP_Settings_Keys_String)cur->id,
0, cleanup); NULL, 0, cleanup);
break; break;
case FREERDP_SETTINGS_TYPE_POINTER: /* pointer */ case FREERDP_SETTINGS_TYPE_POINTER: /* pointer */
freerdp_settings_set_pointer_len(dst, (FreeRDP_Settings_Keys_Pointer)cur->id, NULL, (void)freerdp_settings_set_pointer_len(dst, (FreeRDP_Settings_Keys_Pointer)cur->id,
0); NULL, 0);
break; break;
} }
} }

View File

@ -362,8 +362,11 @@ static BOOL rdp_apply_bitmap_capability_set(rdpSettings* settings, const rdpSett
WINPR_ASSERT(src); WINPR_ASSERT(src);
if (!settings->ServerMode) if (!settings->ServerMode)
freerdp_settings_set_uint32(settings, FreeRDP_ColorDepth, {
freerdp_settings_get_uint32(src, FreeRDP_ColorDepth)); if (!freerdp_settings_set_uint32(settings, FreeRDP_ColorDepth,
freerdp_settings_get_uint32(src, FreeRDP_ColorDepth)))
return FALSE;
}
if (!src->DesktopResize) if (!src->DesktopResize)
settings->DesktopResize = FALSE; settings->DesktopResize = FALSE;

View File

@ -644,7 +644,7 @@ static BOOL rdp_read_info_string(rdpSettings* settings, FreeRDP_Settings_Keys_St
if (terminator.w != L'\0') if (terminator.w != L'\0')
{ {
WLog_ERR(TAG, "protocol error: Domain must be null terminated"); WLog_ERR(TAG, "protocol error: Domain must be null terminated");
freerdp_settings_set_string(settings, id, NULL); (void)freerdp_settings_set_string(settings, id, NULL);
return FALSE; return FALSE;
} }

View File

@ -1519,7 +1519,7 @@ BOOL WINAPI FreeRDP_WTSVirtualChannelRead(HANDLE hChannelHandle, ULONG TimeOut,
if (messageCtx->offset >= messageCtx->length) if (messageCtx->offset >= messageCtx->length)
{ {
MessageQueue_Peek(channel->queue, &message, TRUE); (void)MessageQueue_Peek(channel->queue, &message, TRUE);
peer_channel_queue_free_message(&message); peer_channel_queue_free_message(&message);
} }

View File

@ -800,8 +800,10 @@ rdpSettings* freerdp_settings_new(DWORD flags)
goto out_fail; goto out_fail;
settings->OrderSupport = calloc(1, 32); settings->OrderSupport = calloc(1, 32);
freerdp_settings_set_uint16(settings, FreeRDP_TLSMinVersion, TLS1_VERSION); if (!freerdp_settings_set_uint16(settings, FreeRDP_TLSMinVersion, TLS1_VERSION))
freerdp_settings_set_uint16(settings, FreeRDP_TLSMaxVersion, 0); goto out_fail;
if (!freerdp_settings_set_uint16(settings, FreeRDP_TLSMaxVersion, 0))
goto out_fail;
if (!settings->OrderSupport) if (!settings->OrderSupport)
goto out_fail; goto out_fail;

View File

@ -1353,8 +1353,8 @@ static BOOL is_accepted(rdpTls* tls, const rdpCertificate* cert)
return TRUE; return TRUE;
} }
freerdp_settings_set_string(settings, keyAccepted, NULL); (void)freerdp_settings_set_string(settings, keyAccepted, NULL);
freerdp_settings_set_uint32(settings, keyLength, 0); (void)freerdp_settings_set_uint32(settings, keyLength, 0);
return FALSE; return FALSE;
} }

View File

@ -161,23 +161,19 @@ static char* rdtk_font_load_descriptor_file(const char* filename, size_t* pSize)
if (!fp) if (!fp)
return NULL; return NULL;
_fseeki64(fp, 0, SEEK_END); if (_fseeki64(fp, 0, SEEK_END) != 0)
goto fail;
fileSize.i64 = _ftelli64(fp); fileSize.i64 = _ftelli64(fp);
_fseeki64(fp, 0, SEEK_SET); if (_fseeki64(fp, 0, SEEK_SET) != 0)
goto fail;
if (fileSize.i64 < 1) if (fileSize.i64 < 1)
{ goto fail;
(void)fclose(fp);
return NULL;
}
uint8_t* buffer = (uint8_t*)malloc(fileSize.s + 2); uint8_t* buffer = (uint8_t*)malloc(fileSize.s + 2);
if (!buffer) if (!buffer)
{ goto fail;
(void)fclose(fp);
return NULL;
}
size_t readSize = fread(buffer, fileSize.s, 1, fp); size_t readSize = fread(buffer, fileSize.s, 1, fp);
if (readSize == 0) if (readSize == 0)
@ -198,6 +194,10 @@ static char* rdtk_font_load_descriptor_file(const char* filename, size_t* pSize)
buffer[fileSize.s + 1] = '\0'; buffer[fileSize.s + 1] = '\0';
*pSize = fileSize.s; *pSize = fileSize.s;
return (char*)buffer; return (char*)buffer;
fail:
(void)fclose(fp);
return NULL;
} }
static int rdtk_font_convert_descriptor_code_to_utf8(const char* str, uint8_t* utf8) static int rdtk_font_convert_descriptor_code_to_utf8(const char* str, uint8_t* utf8)

View File

@ -113,11 +113,11 @@ static void mf_peer_rdpsnd_activated(RdpsndServerContext* context)
mf_rdpsnd_derive_buffer_size(recorderState.queue, &recorderState.dataFormat, 0.05, mf_rdpsnd_derive_buffer_size(recorderState.queue, &recorderState.dataFormat, 0.05,
&recorderState.bufferByteSize); &recorderState.bufferByteSize);
for (int i = 0; i < SND_NUMBUFFERS; ++i) for (size_t x = 0; x < SND_NUMBUFFERS; ++x)
{ {
AudioQueueAllocateBuffer(recorderState.queue, recorderState.bufferByteSize, AudioQueueAllocateBuffer(recorderState.queue, recorderState.bufferByteSize,
&recorderState.buffers[i]); &recorderState.buffers[x]);
AudioQueueEnqueueBuffer(recorderState.queue, recorderState.buffers[i], 0, NULL); AudioQueueEnqueueBuffer(recorderState.queue, recorderState.buffers[x], 0, NULL);
} }
recorderState.currentPacket = 0; recorderState.currentPacket = 0;
@ -141,7 +141,7 @@ BOOL mf_peer_rdpsnd_init(mfPeerContext* context)
return TRUE; return TRUE;
} }
BOOL mf_peer_rdpsnd_stop() BOOL mf_peer_rdpsnd_stop(void)
{ {
recorderState.isRunning = false; recorderState.isRunning = false;
AudioQueueStop(recorderState.queue, true); AudioQueueStop(recorderState.queue, true);

View File

@ -1764,7 +1764,7 @@ static void pf_channel_rdpdr_server_context_free(InterceptContextMapEntry* base)
if (!entry) if (!entry)
return; return;
WTSVirtualChannelClose(entry->handle); (void)WTSVirtualChannelClose(entry->handle);
pf_channel_rdpdr_common_context_free(&entry->common); pf_channel_rdpdr_common_context_free(&entry->common);
ArrayList_Free(entry->blockedDevices); ArrayList_Free(entry->blockedDevices);
free(entry); free(entry);

View File

@ -702,31 +702,36 @@ static BOOL pf_client_should_retry_without_nla(pClientContext* pc)
return config->ClientTlsSecurity || config->ClientRdpSecurity; return config->ClientTlsSecurity || config->ClientRdpSecurity;
} }
static void pf_client_set_security_settings(pClientContext* pc) static BOOL pf_client_set_security_settings(pClientContext* pc)
{ {
rdpSettings* settings = NULL;
const proxyConfig* config = NULL;
WINPR_ASSERT(pc); WINPR_ASSERT(pc);
WINPR_ASSERT(pc->pdata); WINPR_ASSERT(pc->pdata);
settings = pc->context.settings; rdpSettings* settings = pc->context.settings;
WINPR_ASSERT(settings); WINPR_ASSERT(settings);
config = pc->pdata->config; const proxyConfig* config = pc->pdata->config;
WINPR_ASSERT(config); WINPR_ASSERT(config);
freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, config->ClientRdpSecurity); if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, config->ClientRdpSecurity))
freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, config->ClientTlsSecurity); return FALSE;
freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, config->ClientNlaSecurity); if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, config->ClientTlsSecurity))
return FALSE;
if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, config->ClientNlaSecurity))
return FALSE;
if (pf_client_use_proxy_smartcard_auth(settings)) if (pf_client_use_proxy_smartcard_auth(settings))
{ {
/* Smartcard authentication requires smartcard redirection to be enabled */ /* Smartcard authentication requires smartcard redirection to be enabled */
freerdp_settings_set_bool(settings, FreeRDP_RedirectSmartCards, TRUE); if (!freerdp_settings_set_bool(settings, FreeRDP_RedirectSmartCards, TRUE))
return FALSE;
/* Reset username/domain, we will get that info later from the sc cert */ /* Reset username/domain, we will get that info later from the sc cert */
freerdp_settings_set_string(settings, FreeRDP_Username, NULL); if (!freerdp_settings_set_string(settings, FreeRDP_Username, NULL))
freerdp_settings_set_string(settings, FreeRDP_Domain, NULL); return FALSE;
if (!freerdp_settings_set_string(settings, FreeRDP_Domain, NULL))
return FALSE;
} }
return TRUE;
} }
static BOOL pf_client_connect_without_nla(pClientContext* pc) static BOOL pf_client_connect_without_nla(pClientContext* pc)
@ -774,7 +779,9 @@ static BOOL pf_client_connect(freerdp* instance)
freerdp_settings_get_string(settings, FreeRDP_Username), freerdp_settings_get_string(settings, FreeRDP_Username),
freerdp_settings_get_string(settings, FreeRDP_Domain)); freerdp_settings_get_string(settings, FreeRDP_Domain));
pf_client_set_security_settings(pc); if (!pf_client_set_security_settings(pc))
return FALSE;
if (pf_client_should_retry_without_nla(pc)) if (pf_client_should_retry_without_nla(pc))
retry = pc->allow_next_conn_failure = TRUE; retry = pc->allow_next_conn_failure = TRUE;

View File

@ -515,24 +515,23 @@ int win_shadow_wds_wnd_init(winShadowSubsystem* subsystem)
int win_shadow_wds_init(winShadowSubsystem* subsystem) int win_shadow_wds_init(winShadowSubsystem* subsystem)
{ {
int status; int status = -1;
HRESULT hr;
DWORD dwCookie; long left = 0;
long left, top; long top = 0;
long right, bottom; long right = 0;
long width, height; long bottom = 0;
IUnknown* pUnknown; BSTR bstrAuthString = NULL;
rdpSettings* settings; BSTR bstrGroupName = NULL;
BSTR bstrAuthString; BSTR bstrPassword = NULL;
BSTR bstrGroupName; BSTR bstrPropertyName = NULL;
BSTR bstrPassword;
BSTR bstrPropertyName;
VARIANT varPropertyValue; VARIANT varPropertyValue;
rdpAssistanceFile* file; rdpAssistanceFile* file = NULL;
IConnectionPoint* pCP; IConnectionPoint* pCP = NULL;
IConnectionPointContainer* pCPC; IConnectionPointContainer* pCPC = NULL;
win_shadow_wds_wnd_init(subsystem); win_shadow_wds_wnd_init(subsystem);
hr = OleInitialize(NULL); HRESULT hr = OleInitialize(NULL);
if (FAILED(hr)) if (FAILED(hr))
{ {
@ -557,7 +556,7 @@ int win_shadow_wds_init(winShadowSubsystem* subsystem)
return -1; return -1;
} }
pUnknown = (IUnknown*)subsystem->pSharingSession; IUnknown* pUnknown = (IUnknown*)subsystem->pSharingSession;
hr = pUnknown->lpVtbl->QueryInterface(pUnknown, &IID_IConnectionPointContainer, (void**)&pCPC); hr = pUnknown->lpVtbl->QueryInterface(pUnknown, &IID_IConnectionPointContainer, (void**)&pCPC);
if (FAILED(hr)) if (FAILED(hr))
@ -577,7 +576,7 @@ int win_shadow_wds_init(winShadowSubsystem* subsystem)
return -1; return -1;
} }
dwCookie = 0; DWORD dwCookie = 0;
subsystem->pSessionEvents = &Shadow_IRDPSessionEvents; subsystem->pSessionEvents = &Shadow_IRDPSessionEvents;
subsystem->pSessionEvents->lpVtbl->AddRef(subsystem->pSessionEvents); subsystem->pSessionEvents->lpVtbl->AddRef(subsystem->pSessionEvents);
hr = pCP->lpVtbl->Advise(pCP, (IUnknown*)subsystem->pSessionEvents, &dwCookie); hr = pCP->lpVtbl->Advise(pCP, (IUnknown*)subsystem->pSessionEvents, &dwCookie);
@ -605,8 +604,8 @@ int win_shadow_wds_init(winShadowSubsystem* subsystem)
return -1; return -1;
} }
width = right - left; long width = right - left;
height = bottom - top; long height = bottom - top;
WLog_INFO( WLog_INFO(
TAG, TAG,
"GetDesktopSharedRect(): left: %ld top: %ld right: %ld bottom: %ld width: %ld height: %ld", "GetDesktopSharedRect(): left: %ld top: %ld right: %ld bottom: %ld width: %ld height: %ld",
@ -765,13 +764,19 @@ int win_shadow_wds_init(winShadowSubsystem* subsystem)
return status; return status;
} }
settings = subsystem->shw->settings; rdpSetting* settings = subsystem->shw->settings;
status = freerdp_assistance_populate_settings_from_assistance_file(file, settings); if (!freerdp_assistance_populate_settings_from_assistance_file(file, settings))
freerdp_settings_set_string(settings, FreeRDP_Domain, "RDP"); return -1;
freerdp_settings_set_string(settings, FreeRDP_Username, "Shadow"); if (!freerdp_settings_set_string(settings, FreeRDP_Domain, "RDP"))
freerdp_settings_set_bool(settings, FreeRDP_AutoLogonEnabled, TRUE); return -1;
freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, width); if (!freerdp_settings_set_string(settings, FreeRDP_Username, "Shadow"))
freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, height); return -1;
if (!freerdp_settings_set_bool(settings, FreeRDP_AutoLogonEnabled, TRUE))
return -1;
if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopWidth, width))
return -1;
if (!freerdp_settings_set_uint32(settings, FreeRDP_DesktopHeight, height))
return -1;
status = win_shadow_rdp_start(subsystem); status = win_shadow_rdp_start(subsystem);
if (status < 0) if (status < 0)

View File

@ -746,14 +746,21 @@ static BOOL shadow_client_logon(freerdp_peer* peer, const SEC_WINNT_AUTH_IDENTIT
goto fail; goto fail;
if (user) if (user)
freerdp_settings_set_string(settings, FreeRDP_Username, user); {
if (!freerdp_settings_set_string(settings, FreeRDP_Username, user))
goto fail;
}
if (domain) if (domain)
freerdp_settings_set_string(settings, FreeRDP_Domain, domain); {
if (!freerdp_settings_set_string(settings, FreeRDP_Domain, domain))
goto fail;
}
if (password) if (password)
freerdp_settings_set_string(settings, FreeRDP_Password, password); {
if (!freerdp_settings_set_string(settings, FreeRDP_Password, password))
goto fail;
}
rc = TRUE; rc = TRUE;
fail: fail:
free(user); free(user);
@ -959,9 +966,12 @@ static UINT shadow_client_rdpgfx_caps_advertise(RdpgfxServerContext* context,
h264 = h264 =
(shadow_encoder_prepare(client->encoder, FREERDP_CODEC_AVC420 | FREERDP_CODEC_AVC444) >= 0); (shadow_encoder_prepare(client->encoder, FREERDP_CODEC_AVC420 | FREERDP_CODEC_AVC444) >= 0);
#else #else
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444v2, FALSE); if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444v2, FALSE))
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444, FALSE); return rc;
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE); if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444, FALSE))
return rc;
if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE))
return rc;
#endif #endif
/* Request full screen update for new gfx channel */ /* Request full screen update for new gfx channel */
@ -1019,25 +1029,38 @@ static UINT shadow_client_rdpgfx_caps_advertise(RdpgfxServerContext* context,
flags = pdu.capsSet->flags; flags = pdu.capsSet->flags;
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444v2, FALSE); if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444v2, FALSE))
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444, FALSE); return rc;
if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444, FALSE))
return rc;
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxThinClient, if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxThinClient,
(flags & RDPGFX_CAPS_FLAG_THINCLIENT) ? TRUE : FALSE); (flags & RDPGFX_CAPS_FLAG_THINCLIENT) ? TRUE
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxSmallCache, : FALSE))
(flags & RDPGFX_CAPS_FLAG_SMALL_CACHE) ? TRUE : FALSE); return rc;
if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxSmallCache,
(flags & RDPGFX_CAPS_FLAG_SMALL_CACHE) ? TRUE
: FALSE))
return rc;
#ifndef WITH_GFX_H264 #ifndef WITH_GFX_H264
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE); if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE))
return rc;
pdu.capsSet->flags &= ~RDPGFX_CAPS_FLAG_AVC420_ENABLED; pdu.capsSet->flags &= ~RDPGFX_CAPS_FLAG_AVC420_ENABLED;
#else #else
if (h264) if (h264)
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, {
(flags & RDPGFX_CAPS_FLAG_AVC420_ENABLED) ? TRUE if (!freerdp_settings_set_bool(
: FALSE); clientSettings, FreeRDP_GfxH264,
(flags & RDPGFX_CAPS_FLAG_AVC420_ENABLED) ? TRUE : FALSE))
return rc;
}
else else
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE); {
if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE))
return rc;
}
#endif #endif
return shadow_client_send_caps_confirm(context, client, &pdu); return shadow_client_send_caps_confirm(context, client, &pdu);
@ -1058,14 +1081,21 @@ static UINT shadow_client_rdpgfx_caps_advertise(RdpgfxServerContext* context,
pdu.capsSet = &caps; pdu.capsSet = &caps;
flags = pdu.capsSet->flags; flags = pdu.capsSet->flags;
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444v2, FALSE); if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444v2, FALSE))
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444, FALSE); return rc;
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE); if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxAVC444, FALSE))
return rc;
if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxH264, FALSE))
return rc;
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxThinClient, if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxThinClient,
(flags & RDPGFX_CAPS_FLAG_THINCLIENT) ? TRUE : FALSE); (flags & RDPGFX_CAPS_FLAG_THINCLIENT) ? TRUE
freerdp_settings_set_bool(clientSettings, FreeRDP_GfxSmallCache, : FALSE))
(flags & RDPGFX_CAPS_FLAG_SMALL_CACHE) ? TRUE : FALSE); return rc;
if (!freerdp_settings_set_bool(clientSettings, FreeRDP_GfxSmallCache,
(flags & RDPGFX_CAPS_FLAG_SMALL_CACHE) ? TRUE
: FALSE))
return rc;
return shadow_client_send_caps_confirm(context, client, &pdu); return shadow_client_send_caps_confirm(context, client, &pdu);
} }

View File

@ -44,6 +44,19 @@
static const char bind_address[] = "bind-address,"; static const char bind_address[] = "bind-address,";
#define fail_at(arg, rc) fail_at_((arg), (rc), __FILE__, __func__, __LINE__)
static int fail_at_(const COMMAND_LINE_ARGUMENT_A* arg, int rc, const char* file, const char* fkt,
size_t line)
{
const DWORD level = WLOG_ERROR;
wLog* log = WLog_Get(TAG);
if (WLog_IsLevelActive(log, level))
WLog_PrintMessage(log, WLOG_MESSAGE_TEXT, level, line, file, fkt,
"Command line parsing failed at '%s' value '%s' [%d]", arg->Name,
arg->Value, rc);
return rc;
}
static int shadow_server_print_command_line_help(int argc, char** argv, static int shadow_server_print_command_line_help(int argc, char** argv,
COMMAND_LINE_ARGUMENT_A* largs) COMMAND_LINE_ARGUMENT_A* largs)
{ {
@ -184,7 +197,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
long val = strtol(arg->Value, NULL, 0); long val = strtol(arg->Value, NULL, 0);
if ((errno != 0) || (val <= 0) || (val > UINT16_MAX)) if ((errno != 0) || (val <= 0) || (val > UINT16_MAX))
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
server->port = (DWORD)val; server->port = (DWORD)val;
} }
@ -192,11 +205,11 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
{ {
/* /bind-address is incompatible */ /* /bind-address is incompatible */
if (server->ipcSocket) if (server->ipcSocket)
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
server->ipcSocket = _strdup(arg->Value); server->ipcSocket = _strdup(arg->Value);
if (!server->ipcSocket) if (!server->ipcSocket)
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "bind-address") CommandLineSwitchCase(arg, "bind-address")
{ {
@ -204,15 +217,15 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
size_t len = strlen(arg->Value) + sizeof(bind_address); size_t len = strlen(arg->Value) + sizeof(bind_address);
/* /ipc-socket is incompatible */ /* /ipc-socket is incompatible */
if (server->ipcSocket) if (server->ipcSocket)
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
server->ipcSocket = calloc(len, sizeof(CHAR)); server->ipcSocket = calloc(len, sizeof(CHAR));
if (!server->ipcSocket) if (!server->ipcSocket)
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
rc = _snprintf(server->ipcSocket, len, "%s%s", bind_address, arg->Value); rc = _snprintf(server->ipcSocket, len, "%s%s", bind_address, arg->Value);
if ((rc < 0) || ((size_t)rc != len - 1)) if ((rc < 0) || ((size_t)rc != len - 1))
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "may-view") CommandLineSwitchCase(arg, "may-view")
{ {
@ -228,7 +241,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
unsigned long val = strtoul(arg->Value, NULL, 0); unsigned long val = strtoul(arg->Value, NULL, 0);
if ((errno != 0) || (val > UINT32_MAX)) if ((errno != 0) || (val > UINT32_MAX))
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
server->maxClientsConnected = val; server->maxClientsConnected = val;
} }
CommandLineSwitchCase(arg, "rect") CommandLineSwitchCase(arg, "rect")
@ -242,7 +255,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
char* str = _strdup(arg->Value); char* str = _strdup(arg->Value);
if (!str) if (!str)
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
tok[0] = p = str; tok[0] = p = str;
p = strchr(p + 1, ','); p = strchr(p + 1, ',');
@ -250,7 +263,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
if (!p) if (!p)
{ {
free(str); free(str);
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
} }
*p++ = '\0'; *p++ = '\0';
@ -260,7 +273,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
if (!p) if (!p)
{ {
free(str); free(str);
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
} }
*p++ = '\0'; *p++ = '\0';
@ -270,7 +283,7 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
if (!p) if (!p)
{ {
free(str); free(str);
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
} }
*p++ = '\0'; *p++ = '\0';
@ -299,11 +312,11 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
free(str); free(str);
if ((x < 0) || (y < 0) || (w < 1) || (h < 1) || (errno != 0)) if ((x < 0) || (y < 0) || (w < 1) || (h < 1) || (errno != 0))
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
if ((x > UINT16_MAX) || (y > UINT16_MAX) || (x + w > UINT16_MAX) || if ((x > UINT16_MAX) || (y > UINT16_MAX) || (x + w > UINT16_MAX) ||
(y + h > UINT16_MAX)) (y + h > UINT16_MAX))
return -1; return fail_at(arg, COMMAND_LINE_ERROR);
server->subRect.left = (UINT16)x; server->subRect.left = (UINT16)x;
server->subRect.top = (UINT16)y; server->subRect.top = (UINT16)y;
server->subRect.right = (UINT16)(x + w); server->subRect.right = (UINT16)(x + w);
@ -318,162 +331,164 @@ int shadow_server_parse_command_line(rdpShadowServer* server, int argc, char** a
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteCredentialGuard, if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteCredentialGuard,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "sec") CommandLineSwitchCase(arg, "sec")
{ {
if (strcmp("rdp", arg->Value) == 0) /* Standard RDP */ if (strcmp("rdp", arg->Value) == 0) /* Standard RDP */
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, TRUE)) if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, TRUE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_UseRdpSecurityLayer, TRUE)) if (!freerdp_settings_set_bool(settings, FreeRDP_UseRdpSecurityLayer, TRUE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
else if (strcmp("tls", arg->Value) == 0) /* TLS */ else if (strcmp("tls", arg->Value) == 0) /* TLS */
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, TRUE)) if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, TRUE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
else if (strcmp("nla", arg->Value) == 0) /* NLA */ else if (strcmp("nla", arg->Value) == 0) /* NLA */
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, TRUE)) if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, TRUE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
else if (strcmp("ext", arg->Value) == 0) /* NLA Extended */ else if (strcmp("ext", arg->Value) == 0) /* NLA Extended */
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, TRUE)) if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, TRUE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
else else
{ {
WLog_ERR(TAG, "unknown protocol security: %s", arg->Value); WLog_ERR(TAG, "unknown protocol security: %s", arg->Value);
return fail_at(arg, COMMAND_LINE_ERROR_UNEXPECTED_VALUE);
} }
} }
CommandLineSwitchCase(arg, "sec-rdp") CommandLineSwitchCase(arg, "sec-rdp")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity, if (!freerdp_settings_set_bool(settings, FreeRDP_RdpSecurity,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "sec-tls") CommandLineSwitchCase(arg, "sec-tls")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity, if (!freerdp_settings_set_bool(settings, FreeRDP_TlsSecurity,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "sec-nla") CommandLineSwitchCase(arg, "sec-nla")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity, if (!freerdp_settings_set_bool(settings, FreeRDP_NlaSecurity,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "sec-ext") CommandLineSwitchCase(arg, "sec-ext")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity, if (!freerdp_settings_set_bool(settings, FreeRDP_ExtSecurity,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "sam-file") CommandLineSwitchCase(arg, "sam-file")
{ {
freerdp_settings_set_string(settings, FreeRDP_NtlmSamFile, arg->Value); if (!freerdp_settings_set_string(settings, FreeRDP_NtlmSamFile, arg->Value))
return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "log-level") CommandLineSwitchCase(arg, "log-level")
{ {
wLog* root = WLog_GetRoot(); wLog* root = WLog_GetRoot();
if (!WLog_SetStringLogLevel(root, arg->Value)) if (!WLog_SetStringLogLevel(root, arg->Value))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "log-filters") CommandLineSwitchCase(arg, "log-filters")
{ {
if (!WLog_AddStringLogFilters(arg->Value)) if (!WLog_AddStringLogFilters(arg->Value))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "nsc") CommandLineSwitchCase(arg, "nsc")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_NSCodec, arg->Value ? TRUE : FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_NSCodec, arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "rfx") CommandLineSwitchCase(arg, "rfx")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteFxCodec, if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteFxCodec,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "gfx") CommandLineSwitchCase(arg, "gfx")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_SupportGraphicsPipeline, if (!freerdp_settings_set_bool(settings, FreeRDP_SupportGraphicsPipeline,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "gfx-progressive") CommandLineSwitchCase(arg, "gfx-progressive")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_GfxProgressive, if (!freerdp_settings_set_bool(settings, FreeRDP_GfxProgressive,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "gfx-rfx") CommandLineSwitchCase(arg, "gfx-rfx")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteFxCodec, if (!freerdp_settings_set_bool(settings, FreeRDP_RemoteFxCodec,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "gfx-planar") CommandLineSwitchCase(arg, "gfx-planar")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_GfxPlanar, arg->Value ? TRUE : FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_GfxPlanar, arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "gfx-avc420") CommandLineSwitchCase(arg, "gfx-avc420")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_GfxH264, arg->Value ? TRUE : FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_GfxH264, arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "gfx-avc444") CommandLineSwitchCase(arg, "gfx-avc444")
{ {
if (!freerdp_settings_set_bool(settings, FreeRDP_GfxAVC444v2, if (!freerdp_settings_set_bool(settings, FreeRDP_GfxAVC444v2,
arg->Value ? TRUE : FALSE)) arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
if (!freerdp_settings_set_bool(settings, FreeRDP_GfxAVC444, arg->Value ? TRUE : FALSE)) if (!freerdp_settings_set_bool(settings, FreeRDP_GfxAVC444, arg->Value ? TRUE : FALSE))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "keytab") CommandLineSwitchCase(arg, "keytab")
{ {
if (!freerdp_settings_set_string(settings, FreeRDP_KerberosKeytab, arg->Value)) if (!freerdp_settings_set_string(settings, FreeRDP_KerberosKeytab, arg->Value))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "ccache") CommandLineSwitchCase(arg, "ccache")
{ {
if (!freerdp_settings_set_string(settings, FreeRDP_KerberosCache, arg->Value)) if (!freerdp_settings_set_string(settings, FreeRDP_KerberosCache, arg->Value))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchCase(arg, "tls-secrets-file") CommandLineSwitchCase(arg, "tls-secrets-file")
{ {
if (!freerdp_settings_set_string(settings, FreeRDP_TlsSecretsFile, arg->Value)) if (!freerdp_settings_set_string(settings, FreeRDP_TlsSecretsFile, arg->Value))
return COMMAND_LINE_ERROR; return fail_at(arg, COMMAND_LINE_ERROR);
} }
CommandLineSwitchDefault(arg) CommandLineSwitchDefault(arg)
{ {

View File

@ -36,7 +36,7 @@ int TestInterlockedAccess(int argc, char* argv[])
/* InterlockedDecrement */ /* InterlockedDecrement */
for (int index = 0; index < 10; index++) for (int index = 0; index < 10; index++)
InterlockedDecrement(Addend); (void)InterlockedDecrement(Addend);
if (*Addend != 0) if (*Addend != 0)
{ {

View File

@ -244,7 +244,7 @@ VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
} }
else else
{ {
InterlockedDecrement(&lpCriticalSection->LockCount); (void)InterlockedDecrement(&lpCriticalSection->LockCount);
} }
} }

View File

@ -192,7 +192,7 @@ void winpr_backtrace_symbols_fd(void* buffer, int fd)
return; return;
for (size_t i = 0; i < used; i++) for (size_t i = 0; i < used; i++)
_write(fd, lines[i], (unsigned)strnlen(lines[i], UINT32_MAX)); (void)_write(fd, lines[i], (unsigned)strnlen(lines[i], UINT32_MAX));
free(lines); free(lines);
} }
#else #else