Milestone 5: deliver embedded RDP sessions and lifecycle hardening
This commit is contained in:
27
third_party/FreeRDP/libfreerdp/common/CMakeLists.txt
vendored
Normal file
27
third_party/FreeRDP/libfreerdp/common/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# FreeRDP: A Remote Desktop Protocol Implementation
|
||||
# libfreerdp-common cmake build script
|
||||
#
|
||||
# Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(MODULE_NAME "freerdp-common")
|
||||
set(MODULE_PREFIX "FREERDP_COMMON")
|
||||
|
||||
set(${MODULE_PREFIX}_SRCS addin.c settings.c settings_getters.c settings_str.c settings_str.h assistance.c)
|
||||
|
||||
freerdp_module_add(${${MODULE_PREFIX}_SRCS})
|
||||
|
||||
if(BUILD_TESTING_INTERNAL OR BUILD_TESTING)
|
||||
add_subdirectory(test)
|
||||
endif()
|
||||
399
third_party/FreeRDP/libfreerdp/common/addin.c
vendored
Normal file
399
third_party/FreeRDP/libfreerdp/common/addin.c
vendored
Normal file
@@ -0,0 +1,399 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Addin Loader
|
||||
*
|
||||
* Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <freerdp/config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/path.h>
|
||||
#include <winpr/string.h>
|
||||
#include <winpr/library.h>
|
||||
|
||||
#include <freerdp/addin.h>
|
||||
#include <freerdp/build-config.h>
|
||||
|
||||
#include <freerdp/log.h>
|
||||
#define TAG FREERDP_TAG("addin")
|
||||
|
||||
static inline BOOL is_path_required(LPCSTR path, size_t len)
|
||||
{
|
||||
if (!path || (len <= 1))
|
||||
return FALSE;
|
||||
|
||||
if (strcmp(path, ".") == 0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LPSTR freerdp_get_library_install_path(void)
|
||||
{
|
||||
LPSTR pszPath = nullptr;
|
||||
size_t cchPath = 0;
|
||||
size_t cchLibraryPath = 0;
|
||||
size_t cchInstallPrefix = 0;
|
||||
BOOL needLibPath = 0;
|
||||
BOOL needInstallPath = 0;
|
||||
LPCSTR pszLibraryPath = FREERDP_LIBRARY_PATH;
|
||||
LPCSTR pszInstallPrefix = FREERDP_INSTALL_PREFIX;
|
||||
cchLibraryPath = strlen(pszLibraryPath) + 1;
|
||||
cchInstallPrefix = strlen(pszInstallPrefix) + 1;
|
||||
cchPath = cchInstallPrefix + cchLibraryPath;
|
||||
needInstallPath = is_path_required(pszInstallPrefix, cchInstallPrefix);
|
||||
needLibPath = is_path_required(pszLibraryPath, cchLibraryPath);
|
||||
|
||||
if (!needInstallPath && !needLibPath)
|
||||
return nullptr;
|
||||
|
||||
pszPath = (LPSTR)malloc(cchPath + 1);
|
||||
|
||||
if (!pszPath)
|
||||
return nullptr;
|
||||
|
||||
if (needInstallPath)
|
||||
{
|
||||
CopyMemory(pszPath, pszInstallPrefix, cchInstallPrefix);
|
||||
pszPath[cchInstallPrefix] = '\0';
|
||||
}
|
||||
|
||||
if (needLibPath)
|
||||
{
|
||||
if (FAILED(NativePathCchAppendA(pszPath, cchPath + 1, pszLibraryPath)))
|
||||
{
|
||||
free(pszPath);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
return pszPath;
|
||||
}
|
||||
|
||||
LPSTR freerdp_get_dynamic_addin_install_path(void)
|
||||
{
|
||||
#if defined(WITH_ADD_PLUGIN_TO_RPATH)
|
||||
return nullptr;
|
||||
#else
|
||||
LPSTR pszPath = nullptr;
|
||||
size_t cchPath = 0;
|
||||
size_t cchAddinPath = 0;
|
||||
size_t cchInstallPrefix = 0;
|
||||
BOOL needLibPath = 0;
|
||||
BOOL needInstallPath = 0;
|
||||
LPCSTR pszAddinPath = FREERDP_ADDIN_PATH;
|
||||
LPCSTR pszInstallPrefix = FREERDP_INSTALL_PREFIX;
|
||||
cchAddinPath = strlen(pszAddinPath) + 1;
|
||||
cchInstallPrefix = strlen(pszInstallPrefix) + 1;
|
||||
cchPath = cchInstallPrefix + cchAddinPath;
|
||||
needInstallPath = is_path_required(pszInstallPrefix, cchInstallPrefix);
|
||||
needLibPath = is_path_required(pszAddinPath, cchAddinPath);
|
||||
|
||||
WLog_DBG(TAG,
|
||||
"freerdp_get_dynamic_addin_install_path <- pszInstallPrefix: %s, pszAddinPath: %s",
|
||||
pszInstallPrefix, pszAddinPath);
|
||||
|
||||
if (!needInstallPath && !needLibPath)
|
||||
return nullptr;
|
||||
|
||||
pszPath = (LPSTR)calloc(cchPath + 1, sizeof(CHAR));
|
||||
|
||||
if (!pszPath)
|
||||
return nullptr;
|
||||
|
||||
if (needInstallPath)
|
||||
{
|
||||
CopyMemory(pszPath, pszInstallPrefix, cchInstallPrefix);
|
||||
pszPath[cchInstallPrefix] = '\0';
|
||||
}
|
||||
|
||||
if (needLibPath)
|
||||
{
|
||||
if (FAILED(NativePathCchAppendA(pszPath, cchPath + 1, pszAddinPath)))
|
||||
{
|
||||
free(pszPath);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
WLog_DBG(TAG, "freerdp_get_dynamic_addin_install_path -> pszPath: %s", pszPath);
|
||||
|
||||
return pszPath;
|
||||
#endif
|
||||
}
|
||||
|
||||
PVIRTUALCHANNELENTRY freerdp_load_dynamic_addin(LPCSTR pszFileName, LPCSTR pszPath,
|
||||
LPCSTR pszEntryName)
|
||||
{
|
||||
LPSTR pszAddinInstallPath = freerdp_get_dynamic_addin_install_path();
|
||||
PVIRTUALCHANNELENTRY entry = nullptr;
|
||||
BOOL bHasExt = TRUE;
|
||||
PCSTR pszExt = nullptr;
|
||||
size_t cchExt = 0;
|
||||
HINSTANCE library = nullptr;
|
||||
size_t cchFileName = 0;
|
||||
size_t cchFilePath = 0;
|
||||
LPSTR pszAddinFile = nullptr;
|
||||
LPSTR pszFilePath = nullptr;
|
||||
LPSTR pszRelativeFilePath = nullptr;
|
||||
size_t cchAddinFile = 0;
|
||||
size_t cchAddinInstallPath = 0;
|
||||
|
||||
if (!pszFileName || !pszEntryName)
|
||||
goto fail;
|
||||
|
||||
WLog_DBG(TAG, "freerdp_load_dynamic_addin <- pszFileName: %s, pszPath: %s, pszEntryName: %s",
|
||||
pszFileName, pszPath, pszEntryName);
|
||||
|
||||
cchFileName = strlen(pszFileName);
|
||||
|
||||
/* Get file name with prefix and extension */
|
||||
if (FAILED(PathCchFindExtensionA(pszFileName, cchFileName + 1, &pszExt)))
|
||||
{
|
||||
pszExt = PathGetSharedLibraryExtensionA(PATH_SHARED_LIB_EXT_WITH_DOT);
|
||||
cchExt = strlen(pszExt);
|
||||
bHasExt = FALSE;
|
||||
}
|
||||
|
||||
if (bHasExt)
|
||||
{
|
||||
pszAddinFile = _strdup(pszFileName);
|
||||
|
||||
if (!pszAddinFile)
|
||||
goto fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
cchAddinFile = cchFileName + cchExt + 2 + sizeof(FREERDP_SHARED_LIBRARY_PREFIX);
|
||||
pszAddinFile = (LPSTR)malloc(cchAddinFile + 1);
|
||||
|
||||
if (!pszAddinFile)
|
||||
goto fail;
|
||||
|
||||
(void)sprintf_s(pszAddinFile, cchAddinFile, FREERDP_SHARED_LIBRARY_PREFIX "%s%s",
|
||||
pszFileName, pszExt);
|
||||
}
|
||||
|
||||
cchAddinFile = strlen(pszAddinFile);
|
||||
|
||||
/* If a path is provided prefix the library name with it. */
|
||||
if (pszPath)
|
||||
{
|
||||
size_t relPathLen = strlen(pszPath) + cchAddinFile + 1;
|
||||
pszRelativeFilePath = calloc(relPathLen, sizeof(CHAR));
|
||||
|
||||
if (!pszRelativeFilePath)
|
||||
goto fail;
|
||||
|
||||
(void)sprintf_s(pszRelativeFilePath, relPathLen, "%s", pszPath);
|
||||
const HRESULT hr = NativePathCchAppendA(pszRelativeFilePath, relPathLen, pszAddinFile);
|
||||
if (FAILED(hr))
|
||||
goto fail;
|
||||
}
|
||||
else
|
||||
pszRelativeFilePath = _strdup(pszAddinFile);
|
||||
|
||||
if (!pszRelativeFilePath)
|
||||
goto fail;
|
||||
|
||||
/* If a system prefix path is provided try these locations too. */
|
||||
if (pszAddinInstallPath)
|
||||
{
|
||||
cchAddinInstallPath = strlen(pszAddinInstallPath);
|
||||
cchFilePath = cchAddinInstallPath + cchFileName + 32;
|
||||
pszFilePath = (LPSTR)malloc(cchFilePath + 1);
|
||||
|
||||
if (!pszFilePath)
|
||||
goto fail;
|
||||
|
||||
CopyMemory(pszFilePath, pszAddinInstallPath, cchAddinInstallPath);
|
||||
pszFilePath[cchAddinInstallPath] = '\0';
|
||||
const HRESULT hr = NativePathCchAppendA(pszFilePath, cchFilePath + 1, pszRelativeFilePath);
|
||||
if (FAILED(hr))
|
||||
goto fail;
|
||||
}
|
||||
else
|
||||
pszFilePath = _strdup(pszRelativeFilePath);
|
||||
|
||||
library = LoadLibraryX(pszFilePath);
|
||||
|
||||
if (!library)
|
||||
goto fail;
|
||||
|
||||
entry = GetProcAddressAs(library, pszEntryName, PVIRTUALCHANNELENTRY);
|
||||
fail:
|
||||
free(pszRelativeFilePath);
|
||||
free(pszAddinFile);
|
||||
free(pszFilePath);
|
||||
free(pszAddinInstallPath);
|
||||
|
||||
if (!entry && library)
|
||||
FreeLibrary(library);
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
PVIRTUALCHANNELENTRY freerdp_load_dynamic_channel_addin_entry(LPCSTR pszName, LPCSTR pszSubsystem,
|
||||
LPCSTR pszType, DWORD dwFlags)
|
||||
{
|
||||
PVIRTUALCHANNELENTRY entry = nullptr;
|
||||
LPSTR pszFileName = nullptr;
|
||||
const size_t cchBaseFileName = sizeof(FREERDP_SHARED_LIBRARY_PREFIX) + 32;
|
||||
size_t nameLen = 0;
|
||||
size_t subsystemLen = 0;
|
||||
size_t typeLen = 0;
|
||||
size_t cchFileName = 0;
|
||||
|
||||
if (pszName)
|
||||
nameLen = strnlen(pszName, MAX_PATH);
|
||||
if (pszSubsystem)
|
||||
subsystemLen = strnlen(pszSubsystem, MAX_PATH);
|
||||
if (pszType)
|
||||
typeLen = strnlen(pszType, MAX_PATH);
|
||||
|
||||
if (pszName && pszSubsystem && pszType)
|
||||
{
|
||||
cchFileName = cchBaseFileName + nameLen + subsystemLen + typeLen;
|
||||
pszFileName = (LPSTR)malloc(cchFileName);
|
||||
|
||||
if (!pszFileName)
|
||||
return nullptr;
|
||||
|
||||
(void)sprintf_s(pszFileName, cchFileName, "%s-client-%s-%s", pszName, pszSubsystem,
|
||||
pszType);
|
||||
}
|
||||
else if (pszName && pszSubsystem)
|
||||
{
|
||||
cchFileName = cchBaseFileName + nameLen + subsystemLen;
|
||||
pszFileName = (LPSTR)malloc(cchFileName);
|
||||
|
||||
if (!pszFileName)
|
||||
return nullptr;
|
||||
|
||||
(void)sprintf_s(pszFileName, cchFileName, "%s-client-%s", pszName, pszSubsystem);
|
||||
}
|
||||
else if (pszName)
|
||||
{
|
||||
cchFileName = cchBaseFileName + nameLen;
|
||||
pszFileName = (LPSTR)malloc(cchFileName);
|
||||
|
||||
if (!pszFileName)
|
||||
return nullptr;
|
||||
|
||||
(void)sprintf_s(pszFileName, cchFileName, "%s-client", pszName);
|
||||
}
|
||||
else
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
{
|
||||
LPCSTR pszExtension = PathGetSharedLibraryExtensionA(0);
|
||||
const char pszPrefix[] = FREERDP_SHARED_LIBRARY_PREFIX;
|
||||
int rc = 0;
|
||||
|
||||
cchFileName += strnlen(pszPrefix, ARRAYSIZE(pszPrefix));
|
||||
if (pszExtension)
|
||||
cchFileName += strnlen(pszExtension, MAX_PATH) + 1;
|
||||
LPSTR tmp = calloc(cchFileName, sizeof(CHAR));
|
||||
if (tmp)
|
||||
rc = sprintf_s(tmp, cchFileName, "%s%s.%s", pszPrefix, pszFileName, pszExtension);
|
||||
|
||||
free(pszFileName);
|
||||
pszFileName = tmp;
|
||||
if (!pszFileName || (rc < 0))
|
||||
{
|
||||
free(pszFileName);
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
if (pszSubsystem)
|
||||
{
|
||||
LPSTR pszEntryName = nullptr;
|
||||
size_t cchEntryName = 0;
|
||||
/* subsystem add-in */
|
||||
cchEntryName = 64 + nameLen;
|
||||
pszEntryName = (LPSTR)malloc(cchEntryName + 1);
|
||||
|
||||
if (!pszEntryName)
|
||||
{
|
||||
free(pszFileName);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
(void)sprintf_s(pszEntryName, cchEntryName + 1, "freerdp_%s_client_subsystem_entry",
|
||||
pszName);
|
||||
entry = freerdp_load_dynamic_addin(pszFileName, nullptr, pszEntryName);
|
||||
free(pszEntryName);
|
||||
free(pszFileName);
|
||||
return entry;
|
||||
}
|
||||
|
||||
/* channel add-in */
|
||||
|
||||
if (dwFlags & FREERDP_ADDIN_CHANNEL_STATIC)
|
||||
{
|
||||
if (dwFlags & FREERDP_ADDIN_CHANNEL_ENTRYEX)
|
||||
entry = freerdp_load_dynamic_addin(pszFileName, nullptr, "VirtualChannelEntryEx");
|
||||
else
|
||||
entry = freerdp_load_dynamic_addin(pszFileName, nullptr, "VirtualChannelEntry");
|
||||
}
|
||||
else if (dwFlags & FREERDP_ADDIN_CHANNEL_DYNAMIC)
|
||||
entry = freerdp_load_dynamic_addin(pszFileName, nullptr, "DVCPluginEntry");
|
||||
else if (dwFlags & FREERDP_ADDIN_CHANNEL_DEVICE)
|
||||
entry = freerdp_load_dynamic_addin(pszFileName, nullptr, "DeviceServiceEntry");
|
||||
else
|
||||
entry = freerdp_load_dynamic_addin(pszFileName, nullptr, pszType);
|
||||
|
||||
free(pszFileName);
|
||||
return entry;
|
||||
}
|
||||
|
||||
static FREERDP_LOAD_CHANNEL_ADDIN_ENTRY_FN freerdp_load_static_channel_addin_entry = nullptr;
|
||||
|
||||
int freerdp_register_addin_provider(FREERDP_LOAD_CHANNEL_ADDIN_ENTRY_FN provider,
|
||||
WINPR_ATTR_UNUSED DWORD dwFlags)
|
||||
{
|
||||
freerdp_load_static_channel_addin_entry = provider;
|
||||
return 0;
|
||||
}
|
||||
|
||||
FREERDP_LOAD_CHANNEL_ADDIN_ENTRY_FN freerdp_get_current_addin_provider(void)
|
||||
{
|
||||
return freerdp_load_static_channel_addin_entry;
|
||||
}
|
||||
|
||||
PVIRTUALCHANNELENTRY freerdp_load_channel_addin_entry(LPCSTR pszName, LPCSTR pszSubsystem,
|
||||
LPCSTR pszType, DWORD dwFlags)
|
||||
{
|
||||
PVIRTUALCHANNELENTRY entry = nullptr;
|
||||
|
||||
if (freerdp_load_static_channel_addin_entry)
|
||||
entry = freerdp_load_static_channel_addin_entry(pszName, pszSubsystem, pszType, dwFlags);
|
||||
|
||||
if (!entry)
|
||||
entry = freerdp_load_dynamic_channel_addin_entry(pszName, pszSubsystem, pszType, dwFlags);
|
||||
|
||||
if (!entry)
|
||||
WLog_WARN(TAG, "Failed to load channel %s [%s]", pszName, pszSubsystem);
|
||||
|
||||
return entry;
|
||||
}
|
||||
1517
third_party/FreeRDP/libfreerdp/common/assistance.c
vendored
Normal file
1517
third_party/FreeRDP/libfreerdp/common/assistance.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4473
third_party/FreeRDP/libfreerdp/common/settings.c
vendored
Normal file
4473
third_party/FreeRDP/libfreerdp/common/settings.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4340
third_party/FreeRDP/libfreerdp/common/settings_getters.c
vendored
Normal file
4340
third_party/FreeRDP/libfreerdp/common/settings_getters.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
488
third_party/FreeRDP/libfreerdp/common/settings_str.c
vendored
Normal file
488
third_party/FreeRDP/libfreerdp/common/settings_str.c
vendored
Normal file
@@ -0,0 +1,488 @@
|
||||
/* Generated by */
|
||||
|
||||
#include "../core/settings.h"
|
||||
#include "settings_str.h"
|
||||
|
||||
BOOL freerdp_settings_clone_keys(rdpSettings* dst, const rdpSettings* src)
|
||||
{
|
||||
WINPR_ASSERT(dst);
|
||||
WINPR_ASSERT(src);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
switch (cur->type)
|
||||
{
|
||||
case FREERDP_SETTINGS_TYPE_BOOL: /* bool */
|
||||
{
|
||||
BOOL sval = freerdp_settings_get_bool(src, (FreeRDP_Settings_Keys_Bool)cur->id);
|
||||
if (!freerdp_settings_set_bool(dst, (FreeRDP_Settings_Keys_Bool)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT16: /* UINT16 */
|
||||
{
|
||||
UINT16 sval =
|
||||
freerdp_settings_get_uint16(src, (FreeRDP_Settings_Keys_UInt16)cur->id);
|
||||
if (!freerdp_settings_set_uint16(dst, (FreeRDP_Settings_Keys_UInt16)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT16: /* INT16 */
|
||||
{
|
||||
INT16 sval = freerdp_settings_get_int16(src, (FreeRDP_Settings_Keys_Int16)cur->id);
|
||||
if (!freerdp_settings_set_int16(dst, (FreeRDP_Settings_Keys_Int16)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT32: /* UINT32 */
|
||||
{
|
||||
UINT32 sval =
|
||||
freerdp_settings_get_uint32(src, (FreeRDP_Settings_Keys_UInt32)cur->id);
|
||||
if (!freerdp_settings_set_uint32(dst, (FreeRDP_Settings_Keys_UInt32)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT32: /* INT32 */
|
||||
{
|
||||
INT32 sval = freerdp_settings_get_int32(src, (FreeRDP_Settings_Keys_Int32)cur->id);
|
||||
if (!freerdp_settings_set_int32(dst, (FreeRDP_Settings_Keys_Int32)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT64: /* UINT64 */
|
||||
{
|
||||
UINT64 sval =
|
||||
freerdp_settings_get_uint64(src, (FreeRDP_Settings_Keys_UInt64)cur->id);
|
||||
if (!freerdp_settings_set_uint64(dst, (FreeRDP_Settings_Keys_UInt64)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT64: /* INT64 */
|
||||
{
|
||||
INT64 sval = freerdp_settings_get_int64(src, (FreeRDP_Settings_Keys_Int64)cur->id);
|
||||
if (!freerdp_settings_set_int64(dst, (FreeRDP_Settings_Keys_Int64)cur->id, sval))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_STRING: /* strings */
|
||||
{
|
||||
const char* sval =
|
||||
freerdp_settings_get_string(src, (FreeRDP_Settings_Keys_String)cur->id);
|
||||
size_t len = 0;
|
||||
if (sval)
|
||||
len = strlen(sval);
|
||||
if (!freerdp_settings_set_string_copy_(dst, (FreeRDP_Settings_Keys_String)cur->id,
|
||||
sval, len, FALSE))
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_POINTER: /* pointer */
|
||||
{
|
||||
if (cur->id == FreeRDP_instance)
|
||||
{
|
||||
const void* sval =
|
||||
freerdp_settings_get_pointer(src, (FreeRDP_Settings_Keys_Pointer)cur->id);
|
||||
if (!freerdp_settings_set_pointer(dst, (FreeRDP_Settings_Keys_Pointer)cur->id,
|
||||
sval))
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL freerdp_settings_print_diff(wLog* log, DWORD level, const rdpSettings* settings,
|
||||
const rdpSettings* other)
|
||||
{
|
||||
BOOL rc = FALSE;
|
||||
|
||||
WINPR_ASSERT(log);
|
||||
WINPR_ASSERT(settings);
|
||||
WINPR_ASSERT(other);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
switch (cur->type)
|
||||
{
|
||||
case FREERDP_SETTINGS_TYPE_BOOL: /* bool */
|
||||
{
|
||||
BOOL sval =
|
||||
freerdp_settings_get_bool(settings, (FreeRDP_Settings_Keys_Bool)cur->id);
|
||||
BOOL cval = freerdp_settings_get_bool(other, (FreeRDP_Settings_Keys_Bool)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [BOOL]: %s -> %s", cur->str, sval ? "TRUE" : "FALSE",
|
||||
cval ? "TRUE" : "FALSE");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT16: /* UINT16 */
|
||||
{
|
||||
UINT16 sval =
|
||||
freerdp_settings_get_uint16(settings, (FreeRDP_Settings_Keys_UInt16)cur->id);
|
||||
UINT16 cval =
|
||||
freerdp_settings_get_uint16(other, (FreeRDP_Settings_Keys_UInt16)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [UINT16]: %" PRIu16 " -> %" PRIu16, cur->str, sval,
|
||||
cval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT16: /* INT16 */
|
||||
{
|
||||
INT16 sval =
|
||||
freerdp_settings_get_int16(settings, (FreeRDP_Settings_Keys_Int16)cur->id);
|
||||
INT16 cval =
|
||||
freerdp_settings_get_int16(other, (FreeRDP_Settings_Keys_Int16)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [INT16]: %" PRId16 " -> %" PRId16, cur->str, sval,
|
||||
cval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT32: /* UINT32 */
|
||||
{
|
||||
UINT32 sval =
|
||||
freerdp_settings_get_uint32(settings, (FreeRDP_Settings_Keys_UInt32)cur->id);
|
||||
UINT32 cval =
|
||||
freerdp_settings_get_uint32(other, (FreeRDP_Settings_Keys_UInt32)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [UINT32]: %" PRIu32 " -> %" PRIu32, cur->str, sval,
|
||||
cval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT32: /* INT32 */
|
||||
{
|
||||
INT32 sval =
|
||||
freerdp_settings_get_int32(settings, (FreeRDP_Settings_Keys_Int32)cur->id);
|
||||
INT32 cval =
|
||||
freerdp_settings_get_int32(other, (FreeRDP_Settings_Keys_Int32)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [INT32]: %" PRId32 " -> %" PRId32, cur->str, sval,
|
||||
cval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT64: /* UINT64 */
|
||||
{
|
||||
UINT64 sval =
|
||||
freerdp_settings_get_uint64(settings, (FreeRDP_Settings_Keys_UInt64)cur->id);
|
||||
UINT64 cval =
|
||||
freerdp_settings_get_uint64(other, (FreeRDP_Settings_Keys_UInt64)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [UINT64]: %" PRIu64 " -> %" PRIu64, cur->str, sval,
|
||||
cval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT64: /* INT64 */
|
||||
{
|
||||
INT64 sval =
|
||||
freerdp_settings_get_int64(settings, (FreeRDP_Settings_Keys_Int64)cur->id);
|
||||
INT64 cval =
|
||||
freerdp_settings_get_int64(other, (FreeRDP_Settings_Keys_Int64)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [INT64]: %" PRId64 " -> %" PRId64, cur->str, sval,
|
||||
cval);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_STRING: /* strings */
|
||||
{
|
||||
const char* sval =
|
||||
freerdp_settings_get_string(settings, (FreeRDP_Settings_Keys_String)cur->id);
|
||||
const char* cval =
|
||||
freerdp_settings_get_string(other, (FreeRDP_Settings_Keys_String)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
if (!sval || !cval || (strcmp(sval, cval) != 0))
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [STRING]: '%s' -> '%s'", cur->str, sval, cval);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_POINTER: /* pointer */
|
||||
{
|
||||
const void* sval =
|
||||
freerdp_settings_get_pointer(settings, (FreeRDP_Settings_Keys_Pointer)cur->id);
|
||||
const void* cval =
|
||||
freerdp_settings_get_pointer(other, (FreeRDP_Settings_Keys_Pointer)cur->id);
|
||||
if (sval != cval)
|
||||
{
|
||||
if ((sval && !cval) || (!sval && cval))
|
||||
{
|
||||
rc = TRUE;
|
||||
WLog_Print(log, level, "%s [POINTER]: '%p' -> '%p'", cur->str, sval, cval);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
void freerdp_settings_dump(wLog* log, DWORD level, const rdpSettings* settings)
|
||||
{
|
||||
WINPR_ASSERT(log);
|
||||
WINPR_ASSERT(settings);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
switch (cur->type)
|
||||
{
|
||||
case FREERDP_SETTINGS_TYPE_BOOL: /* bool */
|
||||
{
|
||||
BOOL sval =
|
||||
freerdp_settings_get_bool(settings, (FreeRDP_Settings_Keys_Bool)cur->id);
|
||||
WLog_Print(log, level, "%s [BOOL]: %s", cur->str, sval ? "TRUE" : "FALSE");
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT16: /* UINT16 */
|
||||
{
|
||||
UINT16 sval =
|
||||
freerdp_settings_get_uint16(settings, (FreeRDP_Settings_Keys_UInt16)cur->id);
|
||||
WLog_Print(log, level, "%s [UINT16]: %" PRIu16, cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT16: /* INT16 */
|
||||
{
|
||||
INT16 sval =
|
||||
freerdp_settings_get_int16(settings, (FreeRDP_Settings_Keys_Int16)cur->id);
|
||||
WLog_Print(log, level, "%s [INT16]: %" PRId16, cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT32: /* UINT32 */
|
||||
{
|
||||
UINT32 sval =
|
||||
freerdp_settings_get_uint32(settings, (FreeRDP_Settings_Keys_UInt32)cur->id);
|
||||
WLog_Print(log, level, "%s [UINT32]: %" PRIu32, cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT32: /* INT32 */
|
||||
{
|
||||
INT32 sval =
|
||||
freerdp_settings_get_int32(settings, (FreeRDP_Settings_Keys_Int32)cur->id);
|
||||
WLog_Print(log, level, "%s [INT32]: %" PRId32, cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_UINT64: /* UINT64 */
|
||||
{
|
||||
UINT64 sval =
|
||||
freerdp_settings_get_uint64(settings, (FreeRDP_Settings_Keys_UInt64)cur->id);
|
||||
WLog_Print(log, level, "%s [UINT64]: %" PRIu64, cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_INT64: /* INT64 */
|
||||
{
|
||||
INT64 sval =
|
||||
freerdp_settings_get_int64(settings, (FreeRDP_Settings_Keys_Int64)cur->id);
|
||||
WLog_Print(log, level, "%s [INT64]: %" PRId64, cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_STRING: /* strings */
|
||||
{
|
||||
const char* sval =
|
||||
freerdp_settings_get_string(settings, (FreeRDP_Settings_Keys_String)cur->id);
|
||||
WLog_Print(log, level, "%s [STRING]: '%s'", cur->str, sval);
|
||||
}
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_POINTER: /* pointer */
|
||||
{
|
||||
const void* sval =
|
||||
freerdp_settings_get_pointer(settings, (FreeRDP_Settings_Keys_Pointer)cur->id);
|
||||
WLog_Print(log, level, "%s [POINTER]: '%p'", cur->str, sval);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void freerdp_settings_free_keys(rdpSettings* dst, BOOL cleanup)
|
||||
{
|
||||
WINPR_ASSERT(dst);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
switch (cur->type)
|
||||
{
|
||||
case FREERDP_SETTINGS_TYPE_STRING: /* strings */
|
||||
freerdp_settings_set_string_copy_(dst, (FreeRDP_Settings_Keys_String)cur->id,
|
||||
nullptr, 0, cleanup);
|
||||
break;
|
||||
case FREERDP_SETTINGS_TYPE_POINTER: /* pointer */
|
||||
freerdp_settings_set_pointer_len(dst, (FreeRDP_Settings_Keys_Pointer)cur->id,
|
||||
nullptr, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SSIZE_T freerdp_settings_get_key_for_name(const char* value)
|
||||
{
|
||||
WINPR_ASSERT(value);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
if (strcmp(value, cur->str) == 0)
|
||||
return cur->id;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
SSIZE_T freerdp_settings_get_type_for_name(const char* value)
|
||||
{
|
||||
WINPR_ASSERT(value);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
if (strcmp(value, cur->str) == 0)
|
||||
return cur->type;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char* freerdp_settings_get_type_name_for_key(SSIZE_T key)
|
||||
{
|
||||
const SSIZE_T type = freerdp_settings_get_type_for_key(key);
|
||||
return freerdp_settings_get_type_name_for_type(type);
|
||||
}
|
||||
|
||||
const char* freerdp_settings_get_type_name_for_type(SSIZE_T type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case FREERDP_SETTINGS_TYPE_BOOL:
|
||||
return "FREERDP_SETTINGS_TYPE_BOOL";
|
||||
case FREERDP_SETTINGS_TYPE_UINT16:
|
||||
return "FREERDP_SETTINGS_TYPE_UINT16";
|
||||
case FREERDP_SETTINGS_TYPE_INT16:
|
||||
return "FREERDP_SETTINGS_TYPE_INT16";
|
||||
case FREERDP_SETTINGS_TYPE_UINT32:
|
||||
return "FREERDP_SETTINGS_TYPE_UINT32";
|
||||
case FREERDP_SETTINGS_TYPE_INT32:
|
||||
return "FREERDP_SETTINGS_TYPE_INT32";
|
||||
case FREERDP_SETTINGS_TYPE_UINT64:
|
||||
return "FREERDP_SETTINGS_TYPE_UINT64";
|
||||
case FREERDP_SETTINGS_TYPE_INT64:
|
||||
return "FREERDP_SETTINGS_TYPE_INT64";
|
||||
case FREERDP_SETTINGS_TYPE_STRING:
|
||||
return "FREERDP_SETTINGS_TYPE_STRING";
|
||||
case FREERDP_SETTINGS_TYPE_POINTER:
|
||||
return "FREERDP_SETTINGS_TYPE_POINTER";
|
||||
default:
|
||||
return "FREERDP_SETTINGS_TYPE_UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
SSIZE_T freerdp_settings_get_type_for_key(SSIZE_T key)
|
||||
{
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
if (cur->id == key)
|
||||
return cur->type;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char* freerdp_settings_get_name_for_key(SSIZE_T key)
|
||||
{
|
||||
for (size_t x = 0; x < ARRAYSIZE(settings_map); x++)
|
||||
{
|
||||
const struct settings_str_entry* cur = &settings_map[x];
|
||||
if (cur->id == key)
|
||||
return cur->str;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
BOOL freerdp_settings_copy_item(rdpSettings* dst, const rdpSettings* src, SSIZE_T id)
|
||||
{
|
||||
WINPR_ASSERT(dst);
|
||||
WINPR_ASSERT(src);
|
||||
|
||||
const SSIZE_T key = freerdp_settings_get_type_for_key(id);
|
||||
switch (key)
|
||||
{
|
||||
case FREERDP_SETTINGS_TYPE_BOOL:
|
||||
{
|
||||
const BOOL val = freerdp_settings_get_bool(src, (FreeRDP_Settings_Keys_Bool)id);
|
||||
return freerdp_settings_set_bool(dst, (FreeRDP_Settings_Keys_Bool)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_INT16:
|
||||
{
|
||||
const INT16 val = freerdp_settings_get_int16(src, (FreeRDP_Settings_Keys_Int16)id);
|
||||
return freerdp_settings_set_int16(dst, (FreeRDP_Settings_Keys_Int16)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_INT32:
|
||||
{
|
||||
const INT32 val = freerdp_settings_get_int32(src, (FreeRDP_Settings_Keys_Int32)id);
|
||||
return freerdp_settings_set_int32(dst, (FreeRDP_Settings_Keys_Int32)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_INT64:
|
||||
{
|
||||
const INT64 val = freerdp_settings_get_int64(src, (FreeRDP_Settings_Keys_Int64)id);
|
||||
return freerdp_settings_set_int64(dst, (FreeRDP_Settings_Keys_Int64)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_UINT16:
|
||||
{
|
||||
const UINT16 val = freerdp_settings_get_uint16(src, (FreeRDP_Settings_Keys_UInt16)id);
|
||||
return freerdp_settings_set_uint16(dst, (FreeRDP_Settings_Keys_UInt16)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_UINT32:
|
||||
{
|
||||
const UINT32 val = freerdp_settings_get_uint32(src, (FreeRDP_Settings_Keys_UInt32)id);
|
||||
return freerdp_settings_set_uint32(dst, (FreeRDP_Settings_Keys_UInt32)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_UINT64:
|
||||
{
|
||||
const UINT64 val = freerdp_settings_get_uint64(src, (FreeRDP_Settings_Keys_UInt64)id);
|
||||
return freerdp_settings_set_uint64(dst, (FreeRDP_Settings_Keys_UInt64)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_STRING:
|
||||
{
|
||||
const char* val = freerdp_settings_get_string(src, (FreeRDP_Settings_Keys_String)id);
|
||||
return freerdp_settings_set_string(dst, (FreeRDP_Settings_Keys_String)id, val);
|
||||
}
|
||||
case FREERDP_SETTINGS_TYPE_POINTER:
|
||||
{
|
||||
const void* val = freerdp_settings_get_pointer(src, (FreeRDP_Settings_Keys_Pointer)id);
|
||||
return freerdp_settings_set_pointer(dst, (FreeRDP_Settings_Keys_Pointer)id, val);
|
||||
}
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
639
third_party/FreeRDP/libfreerdp/common/settings_str.h
vendored
Normal file
639
third_party/FreeRDP/libfreerdp/common/settings_str.h
vendored
Normal file
@@ -0,0 +1,639 @@
|
||||
/* Generated by */
|
||||
|
||||
#ifndef FREERDP_CORE_SETTINGS_STR_H
|
||||
#define FREERDP_CORE_SETTINGS_STR_H
|
||||
|
||||
#include "../core/settings.h"
|
||||
|
||||
#include <freerdp/settings.h>
|
||||
#include <freerdp/log.h>
|
||||
|
||||
#define TAG FREERDP_TAG("common.settings")
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FREERDP_SETTINGS_TYPE_BOOL,
|
||||
FREERDP_SETTINGS_TYPE_UINT16,
|
||||
FREERDP_SETTINGS_TYPE_INT16,
|
||||
FREERDP_SETTINGS_TYPE_UINT32,
|
||||
FREERDP_SETTINGS_TYPE_INT32,
|
||||
FREERDP_SETTINGS_TYPE_UINT64,
|
||||
FREERDP_SETTINGS_TYPE_INT64,
|
||||
FREERDP_SETTINGS_TYPE_STRING,
|
||||
FREERDP_SETTINGS_TYPE_POINTER
|
||||
} FREERDP_SETTINGS_TYPE;
|
||||
|
||||
struct settings_str_entry
|
||||
{
|
||||
SSIZE_T id;
|
||||
SSIZE_T type;
|
||||
const char* str;
|
||||
};
|
||||
static const struct settings_str_entry settings_map[] = {
|
||||
{ FreeRDP_AadSecurity, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AadSecurity" },
|
||||
{ FreeRDP_AllowCacheWaitingList, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AllowCacheWaitingList" },
|
||||
{ FreeRDP_AllowDesktopComposition, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_AllowDesktopComposition" },
|
||||
{ FreeRDP_AllowFontSmoothing, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AllowFontSmoothing" },
|
||||
{ FreeRDP_AllowUnanouncedOrdersFromServer, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_AllowUnanouncedOrdersFromServer" },
|
||||
{ FreeRDP_AltSecFrameMarkerSupport, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_AltSecFrameMarkerSupport" },
|
||||
{ FreeRDP_AsyncChannels, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AsyncChannels" },
|
||||
{ FreeRDP_AsyncUpdate, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AsyncUpdate" },
|
||||
{ FreeRDP_AudioCapture, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AudioCapture" },
|
||||
{ FreeRDP_AudioPlayback, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AudioPlayback" },
|
||||
{ FreeRDP_Authentication, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_Authentication" },
|
||||
{ FreeRDP_AuthenticationOnly, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AuthenticationOnly" },
|
||||
{ FreeRDP_AutoAcceptCertificate, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AutoAcceptCertificate" },
|
||||
{ FreeRDP_AutoDenyCertificate, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AutoDenyCertificate" },
|
||||
{ FreeRDP_AutoLogonEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_AutoLogonEnabled" },
|
||||
{ FreeRDP_AutoReconnectionEnabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_AutoReconnectionEnabled" },
|
||||
{ FreeRDP_AutoReconnectionPacketSupported, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_AutoReconnectionPacketSupported" },
|
||||
{ FreeRDP_BitmapCacheEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_BitmapCacheEnabled" },
|
||||
{ FreeRDP_BitmapCachePersistEnabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_BitmapCachePersistEnabled" },
|
||||
{ FreeRDP_BitmapCacheV3Enabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_BitmapCacheV3Enabled" },
|
||||
{ FreeRDP_BitmapCompressionDisabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_BitmapCompressionDisabled" },
|
||||
{ FreeRDP_CertificateCallbackPreferPEM, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_CertificateCallbackPreferPEM" },
|
||||
{ FreeRDP_CompressionEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_CompressionEnabled" },
|
||||
{ FreeRDP_ConnectChildSession, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ConnectChildSession" },
|
||||
{ FreeRDP_ConsoleSession, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ConsoleSession" },
|
||||
{ FreeRDP_CredentialsFromStdin, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_CredentialsFromStdin" },
|
||||
{ FreeRDP_DeactivateClientDecoding, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DeactivateClientDecoding" },
|
||||
{ FreeRDP_Decorations, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_Decorations" },
|
||||
{ FreeRDP_DesktopResize, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DesktopResize" },
|
||||
{ FreeRDP_DeviceRedirection, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DeviceRedirection" },
|
||||
{ FreeRDP_DisableCredentialsDelegation, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DisableCredentialsDelegation" },
|
||||
{ FreeRDP_DisableCtrlAltDel, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableCtrlAltDel" },
|
||||
{ FreeRDP_DisableCursorBlinking, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableCursorBlinking" },
|
||||
{ FreeRDP_DisableCursorShadow, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableCursorShadow" },
|
||||
{ FreeRDP_DisableFullWindowDrag, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableFullWindowDrag" },
|
||||
{ FreeRDP_DisableMenuAnims, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableMenuAnims" },
|
||||
{ FreeRDP_DisableRemoteAppCapsCheck, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DisableRemoteAppCapsCheck" },
|
||||
{ FreeRDP_DisableThemes, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableThemes" },
|
||||
{ FreeRDP_DisableWallpaper, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DisableWallpaper" },
|
||||
{ FreeRDP_DrawAllowColorSubsampling, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DrawAllowColorSubsampling" },
|
||||
{ FreeRDP_DrawAllowDynamicColorFidelity, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DrawAllowDynamicColorFidelity" },
|
||||
{ FreeRDP_DrawAllowSkipAlpha, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DrawAllowSkipAlpha" },
|
||||
{ FreeRDP_DrawGdiPlusCacheEnabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DrawGdiPlusCacheEnabled" },
|
||||
{ FreeRDP_DrawGdiPlusEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DrawGdiPlusEnabled" },
|
||||
{ FreeRDP_DrawNineGridEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DrawNineGridEnabled" },
|
||||
{ FreeRDP_DumpRemoteFx, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_DumpRemoteFx" },
|
||||
{ FreeRDP_DynamicDaylightTimeDisabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DynamicDaylightTimeDisabled" },
|
||||
{ FreeRDP_DynamicResolutionUpdate, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_DynamicResolutionUpdate" },
|
||||
{ FreeRDP_EmbeddedWindow, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_EmbeddedWindow" },
|
||||
{ FreeRDP_EnableWindowsKey, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_EnableWindowsKey" },
|
||||
{ FreeRDP_EncomspVirtualChannel, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_EncomspVirtualChannel" },
|
||||
{ FreeRDP_ExtSecurity, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ExtSecurity" },
|
||||
{ FreeRDP_ExternalCertificateManagement, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_ExternalCertificateManagement" },
|
||||
{ FreeRDP_FIPSMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_FIPSMode" },
|
||||
{ FreeRDP_FastPathInput, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_FastPathInput" },
|
||||
{ FreeRDP_FastPathOutput, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_FastPathOutput" },
|
||||
{ FreeRDP_ForceEncryptedCsPdu, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ForceEncryptedCsPdu" },
|
||||
{ FreeRDP_ForceMultimon, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ForceMultimon" },
|
||||
{ FreeRDP_FrameMarkerCommandEnabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_FrameMarkerCommandEnabled" },
|
||||
{ FreeRDP_Fullscreen, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_Fullscreen" },
|
||||
{ FreeRDP_GatewayArmTransport, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayArmTransport" },
|
||||
{ FreeRDP_GatewayAvdUseTenantid, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayAvdUseTenantid" },
|
||||
{ FreeRDP_GatewayBypassLocal, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayBypassLocal" },
|
||||
{ FreeRDP_GatewayEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayEnabled" },
|
||||
{ FreeRDP_GatewayHttpExtAuthSspiNtlm, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_GatewayHttpExtAuthSspiNtlm" },
|
||||
{ FreeRDP_GatewayHttpTransport, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayHttpTransport" },
|
||||
{ FreeRDP_GatewayHttpUseWebsockets, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_GatewayHttpUseWebsockets" },
|
||||
{ FreeRDP_GatewayIgnoreRedirectionPolicy, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_GatewayIgnoreRedirectionPolicy" },
|
||||
{ FreeRDP_GatewayRpcTransport, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayRpcTransport" },
|
||||
{ FreeRDP_GatewayUdpTransport, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GatewayUdpTransport" },
|
||||
{ FreeRDP_GatewayUseSameCredentials, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_GatewayUseSameCredentials" },
|
||||
{ FreeRDP_GfxAVC444, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxAVC444" },
|
||||
{ FreeRDP_GfxAVC444v2, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxAVC444v2" },
|
||||
{ FreeRDP_GfxH264, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxH264" },
|
||||
{ FreeRDP_GfxPlanar, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxPlanar" },
|
||||
{ FreeRDP_GfxProgressive, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxProgressive" },
|
||||
{ FreeRDP_GfxProgressiveV2, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxProgressiveV2" },
|
||||
{ FreeRDP_GfxSendQoeAck, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxSendQoeAck" },
|
||||
{ FreeRDP_GfxSmallCache, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxSmallCache" },
|
||||
{ FreeRDP_GfxSuspendFrameAck, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxSuspendFrameAck" },
|
||||
{ FreeRDP_GfxThinClient, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GfxThinClient" },
|
||||
{ FreeRDP_GrabKeyboard, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GrabKeyboard" },
|
||||
{ FreeRDP_GrabMouse, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_GrabMouse" },
|
||||
{ FreeRDP_HasExtendedMouseEvent, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_HasExtendedMouseEvent" },
|
||||
{ FreeRDP_HasHorizontalWheel, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_HasHorizontalWheel" },
|
||||
{ FreeRDP_HasMonitorAttributes, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_HasMonitorAttributes" },
|
||||
{ FreeRDP_HasQoeEvent, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_HasQoeEvent" },
|
||||
{ FreeRDP_HasRelativeMouseEvent, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_HasRelativeMouseEvent" },
|
||||
{ FreeRDP_HiDefRemoteApp, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_HiDefRemoteApp" },
|
||||
{ FreeRDP_IPv6Enabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_IPv6Enabled" },
|
||||
{ FreeRDP_IgnoreCertificate, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_IgnoreCertificate" },
|
||||
{ FreeRDP_IgnoreInvalidDevices, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_IgnoreInvalidDevices" },
|
||||
{ FreeRDP_JpegCodec, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_JpegCodec" },
|
||||
{ FreeRDP_KerberosRdgIsProxy, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_KerberosRdgIsProxy" },
|
||||
{ FreeRDP_ListMonitors, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ListMonitors" },
|
||||
{ FreeRDP_LocalConnection, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_LocalConnection" },
|
||||
{ FreeRDP_LogonErrors, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_LogonErrors" },
|
||||
{ FreeRDP_LogonNotify, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_LogonNotify" },
|
||||
{ FreeRDP_LongCredentialsSupported, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_LongCredentialsSupported" },
|
||||
{ FreeRDP_LyncRdpMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_LyncRdpMode" },
|
||||
{ FreeRDP_MaximizeShell, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MaximizeShell" },
|
||||
{ FreeRDP_MouseAttached, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MouseAttached" },
|
||||
{ FreeRDP_MouseHasWheel, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MouseHasWheel" },
|
||||
{ FreeRDP_MouseMotion, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MouseMotion" },
|
||||
{ FreeRDP_MouseUseRelativeMove, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MouseUseRelativeMove" },
|
||||
{ FreeRDP_MstscCookieMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MstscCookieMode" },
|
||||
{ FreeRDP_MultiTouchGestures, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MultiTouchGestures" },
|
||||
{ FreeRDP_MultiTouchInput, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_MultiTouchInput" },
|
||||
{ FreeRDP_NSCodec, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_NSCodec" },
|
||||
{ FreeRDP_NSCodecAllowDynamicColorFidelity, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_NSCodecAllowDynamicColorFidelity" },
|
||||
{ FreeRDP_NSCodecAllowSubsampling, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_NSCodecAllowSubsampling" },
|
||||
{ FreeRDP_NegotiateSecurityLayer, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_NegotiateSecurityLayer" },
|
||||
{ FreeRDP_NetworkAutoDetect, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_NetworkAutoDetect" },
|
||||
{ FreeRDP_NlaSecurity, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_NlaSecurity" },
|
||||
{ FreeRDP_NoBitmapCompressionHeader, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_NoBitmapCompressionHeader" },
|
||||
{ FreeRDP_OldLicenseBehaviour, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_OldLicenseBehaviour" },
|
||||
{ FreeRDP_PasswordIsSmartcardPin, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_PasswordIsSmartcardPin" },
|
||||
{ FreeRDP_PercentScreenUseHeight, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_PercentScreenUseHeight" },
|
||||
{ FreeRDP_PercentScreenUseWidth, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_PercentScreenUseWidth" },
|
||||
{ FreeRDP_PlayRemoteFx, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_PlayRemoteFx" },
|
||||
{ FreeRDP_PreferIPv6OverIPv4, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_PreferIPv6OverIPv4" },
|
||||
{ FreeRDP_PrintReconnectCookie, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_PrintReconnectCookie" },
|
||||
{ FreeRDP_PromptForCredentials, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_PromptForCredentials" },
|
||||
{ FreeRDP_RdpSecurity, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RdpSecurity" },
|
||||
{ FreeRDP_RdstlsSecurity, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RdstlsSecurity" },
|
||||
{ FreeRDP_RedirectClipboard, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectClipboard" },
|
||||
{ FreeRDP_RedirectDrives, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectDrives" },
|
||||
{ FreeRDP_RedirectHomeDrive, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectHomeDrive" },
|
||||
{ FreeRDP_RedirectParallelPorts, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectParallelPorts" },
|
||||
{ FreeRDP_RedirectPrinters, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectPrinters" },
|
||||
{ FreeRDP_RedirectSerialPorts, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectSerialPorts" },
|
||||
{ FreeRDP_RedirectSmartCards, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectSmartCards" },
|
||||
{ FreeRDP_RedirectWebAuthN, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RedirectWebAuthN" },
|
||||
{ FreeRDP_RefreshRect, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RefreshRect" },
|
||||
{ FreeRDP_RemdeskVirtualChannel, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemdeskVirtualChannel" },
|
||||
{ FreeRDP_RemoteAppLanguageBarSupported, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_RemoteAppLanguageBarSupported" },
|
||||
{ FreeRDP_RemoteApplicationMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteApplicationMode" },
|
||||
{ FreeRDP_RemoteAssistanceMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteAssistanceMode" },
|
||||
{ FreeRDP_RemoteAssistanceRequestControl, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_RemoteAssistanceRequestControl" },
|
||||
{ FreeRDP_RemoteConsoleAudio, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteConsoleAudio" },
|
||||
{ FreeRDP_RemoteCredentialGuard, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteCredentialGuard" },
|
||||
{ FreeRDP_RemoteFxCodec, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteFxCodec" },
|
||||
{ FreeRDP_RemoteFxImageCodec, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteFxImageCodec" },
|
||||
{ FreeRDP_RemoteFxOnly, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_RemoteFxOnly" },
|
||||
{ FreeRDP_RestrictedAdminModeRequired, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_RestrictedAdminModeRequired" },
|
||||
{ FreeRDP_RestrictedAdminModeSupported, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_RestrictedAdminModeSupported" },
|
||||
{ FreeRDP_SaltedChecksum, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SaltedChecksum" },
|
||||
{ FreeRDP_SendPreconnectionPdu, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SendPreconnectionPdu" },
|
||||
{ FreeRDP_ServerLicenseRequired, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ServerLicenseRequired" },
|
||||
{ FreeRDP_ServerMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ServerMode" },
|
||||
{ FreeRDP_SmartSizing, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SmartSizing" },
|
||||
{ FreeRDP_SmartcardEmulation, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SmartcardEmulation" },
|
||||
{ FreeRDP_SmartcardLogon, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SmartcardLogon" },
|
||||
{ FreeRDP_SoftwareGdi, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SoftwareGdi" },
|
||||
{ FreeRDP_SoundBeepsEnabled, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SoundBeepsEnabled" },
|
||||
{ FreeRDP_SpanMonitors, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SpanMonitors" },
|
||||
{ FreeRDP_SupportAsymetricKeys, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportAsymetricKeys" },
|
||||
{ FreeRDP_SupportDisplayControl, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportDisplayControl" },
|
||||
{ FreeRDP_SupportDynamicChannels, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportDynamicChannels" },
|
||||
{ FreeRDP_SupportDynamicTimeZone, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportDynamicTimeZone" },
|
||||
{ FreeRDP_SupportEchoChannel, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportEchoChannel" },
|
||||
{ FreeRDP_SupportEdgeActionV1, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportEdgeActionV1" },
|
||||
{ FreeRDP_SupportEdgeActionV2, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportEdgeActionV2" },
|
||||
{ FreeRDP_SupportErrorInfoPdu, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportErrorInfoPdu" },
|
||||
{ FreeRDP_SupportGeometryTracking, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportGeometryTracking" },
|
||||
{ FreeRDP_SupportGraphicsPipeline, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportGraphicsPipeline" },
|
||||
{ FreeRDP_SupportHeartbeatPdu, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportHeartbeatPdu" },
|
||||
{ FreeRDP_SupportMonitorLayoutPdu, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportMonitorLayoutPdu" },
|
||||
{ FreeRDP_SupportMultitransport, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportMultitransport" },
|
||||
{ FreeRDP_SupportSSHAgentChannel, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportSSHAgentChannel" },
|
||||
{ FreeRDP_SupportSkipChannelJoin, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SupportSkipChannelJoin" },
|
||||
{ FreeRDP_SupportStatusInfoPdu, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportStatusInfoPdu" },
|
||||
{ FreeRDP_SupportVideoOptimized, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SupportVideoOptimized" },
|
||||
{ FreeRDP_SuppressOutput, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SuppressOutput" },
|
||||
{ FreeRDP_SurfaceCommandsEnabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SurfaceCommandsEnabled" },
|
||||
{ FreeRDP_SurfaceFrameMarkerEnabled, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SurfaceFrameMarkerEnabled" },
|
||||
{ FreeRDP_SuspendInput, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_SuspendInput" },
|
||||
{ FreeRDP_SynchronousDynamicChannels, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SynchronousDynamicChannels" },
|
||||
{ FreeRDP_SynchronousStaticChannels, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_SynchronousStaticChannels" },
|
||||
{ FreeRDP_TcpKeepAlive, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_TcpKeepAlive" },
|
||||
{ FreeRDP_TlsSecurity, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_TlsSecurity" },
|
||||
{ FreeRDP_ToggleFullscreen, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_ToggleFullscreen" },
|
||||
{ FreeRDP_TransportDump, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_TransportDump" },
|
||||
{ FreeRDP_TransportDumpReplay, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_TransportDumpReplay" },
|
||||
{ FreeRDP_TransportDumpReplayNodelay, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_TransportDumpReplayNodelay" },
|
||||
{ FreeRDP_UnicodeInput, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_UnicodeInput" },
|
||||
{ FreeRDP_UnmapButtons, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_UnmapButtons" },
|
||||
{ FreeRDP_UseCommonStdioCallbacks, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_UseCommonStdioCallbacks" },
|
||||
{ FreeRDP_UseMultimon, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_UseMultimon" },
|
||||
{ FreeRDP_UseRdpSecurityLayer, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_UseRdpSecurityLayer" },
|
||||
{ FreeRDP_UsingSavedCredentials, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_UsingSavedCredentials" },
|
||||
{ FreeRDP_VideoDisable, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_VideoDisable" },
|
||||
{ FreeRDP_VmConnectMode, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_VmConnectMode" },
|
||||
{ FreeRDP_WaitForOutputBufferFlush, FREERDP_SETTINGS_TYPE_BOOL,
|
||||
"FreeRDP_WaitForOutputBufferFlush" },
|
||||
{ FreeRDP_Workarea, FREERDP_SETTINGS_TYPE_BOOL, "FreeRDP_Workarea" },
|
||||
{ FreeRDP_CapsGeneralCompressionLevel, FREERDP_SETTINGS_TYPE_UINT16,
|
||||
"FreeRDP_CapsGeneralCompressionLevel" },
|
||||
{ FreeRDP_CapsGeneralCompressionTypes, FREERDP_SETTINGS_TYPE_UINT16,
|
||||
"FreeRDP_CapsGeneralCompressionTypes" },
|
||||
{ FreeRDP_CapsProtocolVersion, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_CapsProtocolVersion" },
|
||||
{ FreeRDP_CapsRemoteUnshareFlag, FREERDP_SETTINGS_TYPE_UINT16,
|
||||
"FreeRDP_CapsRemoteUnshareFlag" },
|
||||
{ FreeRDP_CapsUpdateCapabilityFlag, FREERDP_SETTINGS_TYPE_UINT16,
|
||||
"FreeRDP_CapsUpdateCapabilityFlag" },
|
||||
{ FreeRDP_DesktopOrientation, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_DesktopOrientation" },
|
||||
{ FreeRDP_OrderSupportFlags, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_OrderSupportFlags" },
|
||||
{ FreeRDP_OrderSupportFlagsEx, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_OrderSupportFlagsEx" },
|
||||
{ FreeRDP_ProxyPort, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_ProxyPort" },
|
||||
{ FreeRDP_SupportedColorDepths, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_SupportedColorDepths" },
|
||||
{ FreeRDP_TLSMaxVersion, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_TLSMaxVersion" },
|
||||
{ FreeRDP_TLSMinVersion, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_TLSMinVersion" },
|
||||
{ FreeRDP_TextANSICodePage, FREERDP_SETTINGS_TYPE_UINT16, "FreeRDP_TextANSICodePage" },
|
||||
{ FreeRDP_AcceptedCertLength, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_AcceptedCertLength" },
|
||||
{ FreeRDP_AuthenticationLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_AuthenticationLevel" },
|
||||
{ FreeRDP_AutoReconnectMaxRetries, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_AutoReconnectMaxRetries" },
|
||||
{ FreeRDP_BitmapCacheV2NumCells, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_BitmapCacheV2NumCells" },
|
||||
{ FreeRDP_BitmapCacheV3CodecId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_BitmapCacheV3CodecId" },
|
||||
{ FreeRDP_BitmapCacheVersion, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_BitmapCacheVersion" },
|
||||
{ FreeRDP_BrushSupportLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_BrushSupportLevel" },
|
||||
{ FreeRDP_ChannelCount, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ChannelCount" },
|
||||
{ FreeRDP_ChannelDefArraySize, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ChannelDefArraySize" },
|
||||
{ FreeRDP_ClientBuild, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ClientBuild" },
|
||||
{ FreeRDP_ClientRandomLength, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ClientRandomLength" },
|
||||
{ FreeRDP_ClientSessionId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ClientSessionId" },
|
||||
{ FreeRDP_ClipboardFeatureMask, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ClipboardFeatureMask" },
|
||||
{ FreeRDP_ClusterInfoFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ClusterInfoFlags" },
|
||||
{ FreeRDP_ColorDepth, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ColorDepth" },
|
||||
{ FreeRDP_ColorPointerCacheSize, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_ColorPointerCacheSize" },
|
||||
{ FreeRDP_CompDeskSupportLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_CompDeskSupportLevel" },
|
||||
{ FreeRDP_CompressionLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_CompressionLevel" },
|
||||
{ FreeRDP_ConnectionType, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ConnectionType" },
|
||||
{ FreeRDP_CookieMaxLength, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_CookieMaxLength" },
|
||||
{ FreeRDP_DesktopHeight, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DesktopHeight" },
|
||||
{ FreeRDP_DesktopPhysicalHeight, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_DesktopPhysicalHeight" },
|
||||
{ FreeRDP_DesktopPhysicalWidth, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DesktopPhysicalWidth" },
|
||||
{ FreeRDP_DesktopPosX, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DesktopPosX" },
|
||||
{ FreeRDP_DesktopPosY, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DesktopPosY" },
|
||||
{ FreeRDP_DesktopScaleFactor, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DesktopScaleFactor" },
|
||||
{ FreeRDP_DesktopWidth, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DesktopWidth" },
|
||||
{ FreeRDP_DeviceArraySize, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DeviceArraySize" },
|
||||
{ FreeRDP_DeviceCount, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DeviceCount" },
|
||||
{ FreeRDP_DeviceScaleFactor, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DeviceScaleFactor" },
|
||||
{ FreeRDP_DrawNineGridCacheEntries, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_DrawNineGridCacheEntries" },
|
||||
{ FreeRDP_DrawNineGridCacheSize, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_DrawNineGridCacheSize" },
|
||||
{ FreeRDP_DynamicChannelArraySize, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_DynamicChannelArraySize" },
|
||||
{ FreeRDP_DynamicChannelCount, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_DynamicChannelCount" },
|
||||
{ FreeRDP_EarlyCapabilityFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_EarlyCapabilityFlags" },
|
||||
{ FreeRDP_EncryptionLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_EncryptionLevel" },
|
||||
{ FreeRDP_EncryptionMethods, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_EncryptionMethods" },
|
||||
{ FreeRDP_ExtEncryptionMethods, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ExtEncryptionMethods" },
|
||||
{ FreeRDP_FakeMouseMotionInterval, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_FakeMouseMotionInterval" },
|
||||
{ FreeRDP_Floatbar, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_Floatbar" },
|
||||
{ FreeRDP_ForceIPvX, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ForceIPvX" },
|
||||
{ FreeRDP_FrameAcknowledge, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_FrameAcknowledge" },
|
||||
{ FreeRDP_GatewayAcceptedCertLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_GatewayAcceptedCertLength" },
|
||||
{ FreeRDP_GatewayCredentialsSource, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_GatewayCredentialsSource" },
|
||||
{ FreeRDP_GatewayPort, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_GatewayPort" },
|
||||
{ FreeRDP_GatewayUsageMethod, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_GatewayUsageMethod" },
|
||||
{ FreeRDP_GfxCapsFilter, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_GfxCapsFilter" },
|
||||
{ FreeRDP_GlyphSupportLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_GlyphSupportLevel" },
|
||||
{ FreeRDP_JpegCodecId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_JpegCodecId" },
|
||||
{ FreeRDP_JpegQuality, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_JpegQuality" },
|
||||
{ FreeRDP_KeySpec, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeySpec" },
|
||||
{ FreeRDP_KeyboardCodePage, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeyboardCodePage" },
|
||||
{ FreeRDP_KeyboardFunctionKey, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeyboardFunctionKey" },
|
||||
{ FreeRDP_KeyboardHook, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeyboardHook" },
|
||||
{ FreeRDP_KeyboardLayout, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeyboardLayout" },
|
||||
{ FreeRDP_KeyboardSubType, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeyboardSubType" },
|
||||
{ FreeRDP_KeyboardType, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_KeyboardType" },
|
||||
{ FreeRDP_LargePointerFlag, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_LargePointerFlag" },
|
||||
{ FreeRDP_LoadBalanceInfoLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_LoadBalanceInfoLength" },
|
||||
{ FreeRDP_MonitorAttributeFlags, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_MonitorAttributeFlags" },
|
||||
{ FreeRDP_MonitorCount, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_MonitorCount" },
|
||||
{ FreeRDP_MonitorDefArraySize, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_MonitorDefArraySize" },
|
||||
{ FreeRDP_MonitorFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_MonitorFlags" },
|
||||
{ FreeRDP_MultifragMaxRequestSize, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_MultifragMaxRequestSize" },
|
||||
{ FreeRDP_MultitransportFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_MultitransportFlags" },
|
||||
{ FreeRDP_NSCodecColorLossLevel, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_NSCodecColorLossLevel" },
|
||||
{ FreeRDP_NSCodecId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_NSCodecId" },
|
||||
{ FreeRDP_NegotiationFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_NegotiationFlags" },
|
||||
{ FreeRDP_NumMonitorIds, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_NumMonitorIds" },
|
||||
{ FreeRDP_OffscreenCacheEntries, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_OffscreenCacheEntries" },
|
||||
{ FreeRDP_OffscreenCacheSize, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_OffscreenCacheSize" },
|
||||
{ FreeRDP_OffscreenSupportLevel, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_OffscreenSupportLevel" },
|
||||
{ FreeRDP_OsMajorType, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_OsMajorType" },
|
||||
{ FreeRDP_OsMinorType, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_OsMinorType" },
|
||||
{ FreeRDP_Password51Length, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_Password51Length" },
|
||||
{ FreeRDP_PduSource, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_PduSource" },
|
||||
{ FreeRDP_PercentScreen, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_PercentScreen" },
|
||||
{ FreeRDP_PerformanceFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_PerformanceFlags" },
|
||||
{ FreeRDP_PointerCacheSize, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_PointerCacheSize" },
|
||||
{ FreeRDP_PreconnectionId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_PreconnectionId" },
|
||||
{ FreeRDP_ProxyType, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ProxyType" },
|
||||
{ FreeRDP_RdpVersion, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RdpVersion" },
|
||||
{ FreeRDP_ReceivedCapabilitiesSize, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_ReceivedCapabilitiesSize" },
|
||||
{ FreeRDP_RedirectedSessionId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RedirectedSessionId" },
|
||||
{ FreeRDP_RedirectionAcceptedCertLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RedirectionAcceptedCertLength" },
|
||||
{ FreeRDP_RedirectionFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RedirectionFlags" },
|
||||
{ FreeRDP_RedirectionGuidLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RedirectionGuidLength" },
|
||||
{ FreeRDP_RedirectionPasswordLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RedirectionPasswordLength" },
|
||||
{ FreeRDP_RedirectionPreferType, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RedirectionPreferType" },
|
||||
{ FreeRDP_RedirectionTsvUrlLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RedirectionTsvUrlLength" },
|
||||
{ FreeRDP_RemoteAppNumIconCacheEntries, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteAppNumIconCacheEntries" },
|
||||
{ FreeRDP_RemoteAppNumIconCaches, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteAppNumIconCaches" },
|
||||
{ FreeRDP_RemoteApplicationExpandCmdLine, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteApplicationExpandCmdLine" },
|
||||
{ FreeRDP_RemoteApplicationExpandWorkingDir, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteApplicationExpandWorkingDir" },
|
||||
{ FreeRDP_RemoteApplicationSupportLevel, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteApplicationSupportLevel" },
|
||||
{ FreeRDP_RemoteApplicationSupportMask, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteApplicationSupportMask" },
|
||||
{ FreeRDP_RemoteFxCaptureFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RemoteFxCaptureFlags" },
|
||||
{ FreeRDP_RemoteFxCodecId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RemoteFxCodecId" },
|
||||
{ FreeRDP_RemoteFxCodecMode, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RemoteFxCodecMode" },
|
||||
{ FreeRDP_RemoteFxRlgrMode, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RemoteFxRlgrMode" },
|
||||
{ FreeRDP_RemoteWndSupportLevel, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_RemoteWndSupportLevel" },
|
||||
{ FreeRDP_RequestedProtocols, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_RequestedProtocols" },
|
||||
{ FreeRDP_SelectedProtocol, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_SelectedProtocol" },
|
||||
{ FreeRDP_ServerCertificateLength, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_ServerCertificateLength" },
|
||||
{ FreeRDP_ServerLicenseProductIssuersCount, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_ServerLicenseProductIssuersCount" },
|
||||
{ FreeRDP_ServerLicenseProductVersion, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_ServerLicenseProductVersion" },
|
||||
{ FreeRDP_ServerPort, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ServerPort" },
|
||||
{ FreeRDP_ServerRandomLength, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ServerRandomLength" },
|
||||
{ FreeRDP_ShareId, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ShareId" },
|
||||
{ FreeRDP_SmartSizingHeight, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_SmartSizingHeight" },
|
||||
{ FreeRDP_SmartSizingWidth, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_SmartSizingWidth" },
|
||||
{ FreeRDP_StaticChannelArraySize, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_StaticChannelArraySize" },
|
||||
{ FreeRDP_StaticChannelCount, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_StaticChannelCount" },
|
||||
{ FreeRDP_SurfaceCommandsSupported, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_SurfaceCommandsSupported" },
|
||||
{ FreeRDP_TargetNetAddressCount, FREERDP_SETTINGS_TYPE_UINT32,
|
||||
"FreeRDP_TargetNetAddressCount" },
|
||||
{ FreeRDP_TcpAckTimeout, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_TcpAckTimeout" },
|
||||
{ FreeRDP_TcpConnectTimeout, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_TcpConnectTimeout" },
|
||||
{ FreeRDP_TcpKeepAliveDelay, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_TcpKeepAliveDelay" },
|
||||
{ FreeRDP_TcpKeepAliveInterval, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_TcpKeepAliveInterval" },
|
||||
{ FreeRDP_TcpKeepAliveRetries, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_TcpKeepAliveRetries" },
|
||||
{ FreeRDP_ThreadingFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_ThreadingFlags" },
|
||||
{ FreeRDP_TlsSecLevel, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_TlsSecLevel" },
|
||||
{ FreeRDP_VCChunkSize, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_VCChunkSize" },
|
||||
{ FreeRDP_VCFlags, FREERDP_SETTINGS_TYPE_UINT32, "FreeRDP_VCFlags" },
|
||||
{ FreeRDP_MonitorLocalShiftX, FREERDP_SETTINGS_TYPE_INT32, "FreeRDP_MonitorLocalShiftX" },
|
||||
{ FreeRDP_MonitorLocalShiftY, FREERDP_SETTINGS_TYPE_INT32, "FreeRDP_MonitorLocalShiftY" },
|
||||
{ FreeRDP_XPan, FREERDP_SETTINGS_TYPE_INT32, "FreeRDP_XPan" },
|
||||
{ FreeRDP_YPan, FREERDP_SETTINGS_TYPE_INT32, "FreeRDP_YPan" },
|
||||
{ FreeRDP_MonitorOverrideFlags, FREERDP_SETTINGS_TYPE_UINT64, "FreeRDP_MonitorOverrideFlags" },
|
||||
{ FreeRDP_ParentWindowId, FREERDP_SETTINGS_TYPE_UINT64, "FreeRDP_ParentWindowId" },
|
||||
{ FreeRDP_AadServerHostname, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_AadServerHostname" },
|
||||
{ FreeRDP_AcceptedCert, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_AcceptedCert" },
|
||||
{ FreeRDP_ActionScript, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ActionScript" },
|
||||
{ FreeRDP_AllowedTlsCiphers, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_AllowedTlsCiphers" },
|
||||
{ FreeRDP_AlternateShell, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_AlternateShell" },
|
||||
{ FreeRDP_AssistanceFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_AssistanceFile" },
|
||||
{ FreeRDP_AuthenticationPackageList, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_AuthenticationPackageList" },
|
||||
{ FreeRDP_AuthenticationServiceClass, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_AuthenticationServiceClass" },
|
||||
{ FreeRDP_BitmapCachePersistFile, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_BitmapCachePersistFile" },
|
||||
{ FreeRDP_CardName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_CardName" },
|
||||
{ FreeRDP_CertificateAcceptedFingerprints, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_CertificateAcceptedFingerprints" },
|
||||
{ FreeRDP_CertificateName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_CertificateName" },
|
||||
{ FreeRDP_ClientAddress, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ClientAddress" },
|
||||
{ FreeRDP_ClientDir, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ClientDir" },
|
||||
{ FreeRDP_ClientHostname, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ClientHostname" },
|
||||
{ FreeRDP_ClientProductId, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ClientProductId" },
|
||||
{ FreeRDP_ClipboardUseSelection, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_ClipboardUseSelection" },
|
||||
{ FreeRDP_ComputerName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ComputerName" },
|
||||
{ FreeRDP_ConfigPath, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ConfigPath" },
|
||||
{ FreeRDP_ConnectionFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ConnectionFile" },
|
||||
{ FreeRDP_ContainerName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ContainerName" },
|
||||
{ FreeRDP_CspName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_CspName" },
|
||||
{ FreeRDP_CurrentPath, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_CurrentPath" },
|
||||
{ FreeRDP_Domain, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_Domain" },
|
||||
{ FreeRDP_DrivesToRedirect, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_DrivesToRedirect" },
|
||||
{ FreeRDP_DumpRemoteFxFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_DumpRemoteFxFile" },
|
||||
{ FreeRDP_DynamicDSTTimeZoneKeyName, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_DynamicDSTTimeZoneKeyName" },
|
||||
{ FreeRDP_GatewayAcceptedCert, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAcceptedCert" },
|
||||
{ FreeRDP_GatewayAccessToken, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAccessToken" },
|
||||
{ FreeRDP_GatewayAvdAadtenantid, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdAadtenantid" },
|
||||
{ FreeRDP_GatewayAvdAccessAadFormat, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdAccessAadFormat" },
|
||||
{ FreeRDP_GatewayAvdAccessTokenFormat, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdAccessTokenFormat" },
|
||||
{ FreeRDP_GatewayAvdActivityhint, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdActivityhint" },
|
||||
{ FreeRDP_GatewayAvdArmpath, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdArmpath" },
|
||||
{ FreeRDP_GatewayAvdClientID, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdClientID" },
|
||||
{ FreeRDP_GatewayAvdDiagnosticserviceurl, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdDiagnosticserviceurl" },
|
||||
{ FreeRDP_GatewayAvdGeo, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdGeo" },
|
||||
{ FreeRDP_GatewayAvdHubdiscoverygeourl, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdHubdiscoverygeourl" },
|
||||
{ FreeRDP_GatewayAvdScope, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayAvdScope" },
|
||||
{ FreeRDP_GatewayAvdWvdEndpointPool, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAvdWvdEndpointPool" },
|
||||
{ FreeRDP_GatewayAzureActiveDirectory, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayAzureActiveDirectory" },
|
||||
{ FreeRDP_GatewayDomain, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayDomain" },
|
||||
{ FreeRDP_GatewayHostname, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayHostname" },
|
||||
{ FreeRDP_GatewayHttpExtAuthBearer, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayHttpExtAuthBearer" },
|
||||
{ FreeRDP_GatewayHttpMsUserAgent, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_GatewayHttpMsUserAgent" },
|
||||
{ FreeRDP_GatewayHttpReferer, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayHttpReferer" },
|
||||
{ FreeRDP_GatewayHttpUserAgent, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayHttpUserAgent" },
|
||||
{ FreeRDP_GatewayPassword, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayPassword" },
|
||||
{ FreeRDP_GatewayUrl, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayUrl" },
|
||||
{ FreeRDP_GatewayUsername, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_GatewayUsername" },
|
||||
{ FreeRDP_HomePath, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_HomePath" },
|
||||
{ FreeRDP_ImeFileName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ImeFileName" },
|
||||
{ FreeRDP_KerberosArmor, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosArmor" },
|
||||
{ FreeRDP_KerberosCache, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosCache" },
|
||||
{ FreeRDP_KerberosKdcUrl, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosKdcUrl" },
|
||||
{ FreeRDP_KerberosKeytab, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosKeytab" },
|
||||
{ FreeRDP_KerberosLifeTime, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosLifeTime" },
|
||||
{ FreeRDP_KerberosRealm, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosRealm" },
|
||||
{ FreeRDP_KerberosRenewableLifeTime, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_KerberosRenewableLifeTime" },
|
||||
{ FreeRDP_KerberosStartTime, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KerberosStartTime" },
|
||||
{ FreeRDP_KeyboardPipeName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_KeyboardPipeName" },
|
||||
{ FreeRDP_KeyboardRemappingList, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_KeyboardRemappingList" },
|
||||
{ FreeRDP_NtlmSamFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_NtlmSamFile" },
|
||||
{ FreeRDP_Password, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_Password" },
|
||||
{ FreeRDP_PasswordHash, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_PasswordHash" },
|
||||
{ FreeRDP_Pkcs11Module, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_Pkcs11Module" },
|
||||
{ FreeRDP_PkinitAnchors, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_PkinitAnchors" },
|
||||
{ FreeRDP_PlayRemoteFxFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_PlayRemoteFxFile" },
|
||||
{ FreeRDP_PreconnectionBlob, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_PreconnectionBlob" },
|
||||
{ FreeRDP_ProxyHostname, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ProxyHostname" },
|
||||
{ FreeRDP_ProxyPassword, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ProxyPassword" },
|
||||
{ FreeRDP_ProxyUsername, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ProxyUsername" },
|
||||
{ FreeRDP_RDP2TCPArgs, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_RDP2TCPArgs" },
|
||||
{ FreeRDP_ReaderName, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ReaderName" },
|
||||
{ FreeRDP_RedirectionAcceptedCert, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RedirectionAcceptedCert" },
|
||||
{ FreeRDP_RedirectionDomain, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_RedirectionDomain" },
|
||||
{ FreeRDP_RedirectionTargetFQDN, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RedirectionTargetFQDN" },
|
||||
{ FreeRDP_RedirectionTargetNetBiosName, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RedirectionTargetNetBiosName" },
|
||||
{ FreeRDP_RedirectionUsername, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_RedirectionUsername" },
|
||||
{ FreeRDP_RemoteApplicationCmdLine, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationCmdLine" },
|
||||
{ FreeRDP_RemoteApplicationFile, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationFile" },
|
||||
{ FreeRDP_RemoteApplicationGuid, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationGuid" },
|
||||
{ FreeRDP_RemoteApplicationIcon, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationIcon" },
|
||||
{ FreeRDP_RemoteApplicationName, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationName" },
|
||||
{ FreeRDP_RemoteApplicationProgram, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationProgram" },
|
||||
{ FreeRDP_RemoteApplicationWorkingDir, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteApplicationWorkingDir" },
|
||||
{ FreeRDP_RemoteAssistancePassStub, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteAssistancePassStub" },
|
||||
{ FreeRDP_RemoteAssistancePassword, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteAssistancePassword" },
|
||||
{ FreeRDP_RemoteAssistanceRCTicket, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteAssistanceRCTicket" },
|
||||
{ FreeRDP_RemoteAssistanceSessionId, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_RemoteAssistanceSessionId" },
|
||||
{ FreeRDP_ServerHostname, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_ServerHostname" },
|
||||
{ FreeRDP_ServerLicenseCompanyName, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_ServerLicenseCompanyName" },
|
||||
{ FreeRDP_ServerLicenseProductName, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_ServerLicenseProductName" },
|
||||
{ FreeRDP_ShellWorkingDirectory, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_ShellWorkingDirectory" },
|
||||
{ FreeRDP_SmartcardCertificate, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_SmartcardCertificate" },
|
||||
{ FreeRDP_SmartcardPrivateKey, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_SmartcardPrivateKey" },
|
||||
{ FreeRDP_SspiModule, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_SspiModule" },
|
||||
{ FreeRDP_TargetNetAddress, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_TargetNetAddress" },
|
||||
{ FreeRDP_TerminalDescriptor, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_TerminalDescriptor" },
|
||||
{ FreeRDP_TlsSecretsFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_TlsSecretsFile" },
|
||||
{ FreeRDP_TransportDumpFile, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_TransportDumpFile" },
|
||||
{ FreeRDP_UserSpecifiedServerName, FREERDP_SETTINGS_TYPE_STRING,
|
||||
"FreeRDP_UserSpecifiedServerName" },
|
||||
{ FreeRDP_Username, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_Username" },
|
||||
{ FreeRDP_WinSCardModule, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_WinSCardModule" },
|
||||
{ FreeRDP_WindowTitle, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_WindowTitle" },
|
||||
{ FreeRDP_WmClass, FREERDP_SETTINGS_TYPE_STRING, "FreeRDP_WmClass" },
|
||||
{ FreeRDP_BitmapCacheV2CellInfo, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_BitmapCacheV2CellInfo" },
|
||||
{ FreeRDP_ChannelDefArray, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_ChannelDefArray" },
|
||||
{ FreeRDP_ClientAutoReconnectCookie, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_ClientAutoReconnectCookie" },
|
||||
{ FreeRDP_ClientRandom, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_ClientRandom" },
|
||||
{ FreeRDP_ClientTimeZone, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_ClientTimeZone" },
|
||||
{ FreeRDP_DeviceArray, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_DeviceArray" },
|
||||
{ FreeRDP_DynamicChannelArray, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_DynamicChannelArray" },
|
||||
{ FreeRDP_FragCache, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_FragCache" },
|
||||
{ FreeRDP_GlyphCache, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_GlyphCache" },
|
||||
{ FreeRDP_LoadBalanceInfo, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_LoadBalanceInfo" },
|
||||
{ FreeRDP_MonitorDefArray, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_MonitorDefArray" },
|
||||
{ FreeRDP_MonitorIds, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_MonitorIds" },
|
||||
{ FreeRDP_OrderSupport, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_OrderSupport" },
|
||||
{ FreeRDP_Password51, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_Password51" },
|
||||
{ FreeRDP_RdpServerCertificate, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_RdpServerCertificate" },
|
||||
{ FreeRDP_RdpServerRsaKey, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_RdpServerRsaKey" },
|
||||
{ FreeRDP_ReceivedCapabilities, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_ReceivedCapabilities" },
|
||||
{ FreeRDP_ReceivedCapabilityData, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_ReceivedCapabilityData" },
|
||||
{ FreeRDP_ReceivedCapabilityDataSizes, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_ReceivedCapabilityDataSizes" },
|
||||
{ FreeRDP_RedirectionGuid, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_RedirectionGuid" },
|
||||
{ FreeRDP_RedirectionPassword, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_RedirectionPassword" },
|
||||
{ FreeRDP_RedirectionTargetCertificate, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_RedirectionTargetCertificate" },
|
||||
{ FreeRDP_RedirectionTsvUrl, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_RedirectionTsvUrl" },
|
||||
{ FreeRDP_ServerAutoReconnectCookie, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_ServerAutoReconnectCookie" },
|
||||
{ FreeRDP_ServerCertificate, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_ServerCertificate" },
|
||||
{ FreeRDP_ServerLicenseProductIssuers, FREERDP_SETTINGS_TYPE_POINTER,
|
||||
"FreeRDP_ServerLicenseProductIssuers" },
|
||||
{ FreeRDP_ServerRandom, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_ServerRandom" },
|
||||
{ FreeRDP_StaticChannelArray, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_StaticChannelArray" },
|
||||
{ FreeRDP_TargetNetAddresses, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_TargetNetAddresses" },
|
||||
{ FreeRDP_TargetNetPorts, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_TargetNetPorts" },
|
||||
{ FreeRDP_instance, FREERDP_SETTINGS_TYPE_POINTER, "FreeRDP_instance" },
|
||||
};
|
||||
|
||||
#endif
|
||||
30
third_party/FreeRDP/libfreerdp/common/test/CMakeLists.txt
vendored
Normal file
30
third_party/FreeRDP/libfreerdp/common/test/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
set(MODULE_NAME "TestCommon")
|
||||
set(MODULE_PREFIX "TEST_COMMON")
|
||||
|
||||
disable_warnings_for_directory(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.c)
|
||||
|
||||
set(${MODULE_PREFIX}_TESTS TestAddinArgv.c TestCommonAssistance.c)
|
||||
|
||||
set(FUZZERS TestFuzzCommonAssistanceParseFileBuffer.c TestFuzzCommonAssistanceBinToHexString.c
|
||||
TestFuzzCommonAssistanceHexStringToBin.c
|
||||
)
|
||||
|
||||
create_test_sourcelist(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_DRIVER} ${${MODULE_PREFIX}_TESTS})
|
||||
|
||||
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
|
||||
|
||||
target_link_libraries(${MODULE_NAME} freerdp winpr)
|
||||
|
||||
include(AddFuzzerTest)
|
||||
add_fuzzer_test("${FUZZERS}" "freerdp winpr")
|
||||
|
||||
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
|
||||
|
||||
foreach(test ${${MODULE_PREFIX}_TESTS})
|
||||
get_filename_component(TestName ${test} NAME_WE)
|
||||
add_test(${TestName} ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${TestName})
|
||||
endforeach()
|
||||
|
||||
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "FreeRDP/Common/Test")
|
||||
346
third_party/FreeRDP/libfreerdp/common/test/TestAddinArgv.c
vendored
Normal file
346
third_party/FreeRDP/libfreerdp/common/test/TestAddinArgv.c
vendored
Normal file
@@ -0,0 +1,346 @@
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/crypto.h>
|
||||
|
||||
#include <freerdp/settings.h>
|
||||
|
||||
static BOOL test_alloc(void)
|
||||
{
|
||||
BOOL rc = FALSE;
|
||||
int rng = 0;
|
||||
const char* param[] = { "foo:", "bar", "bla", "rdp", nullptr };
|
||||
ADDIN_ARGV* arg1 = nullptr;
|
||||
ADDIN_ARGV* arg2 = nullptr;
|
||||
ADDIN_ARGV* arg3 = nullptr;
|
||||
ADDIN_ARGV* arg4 = nullptr;
|
||||
|
||||
/* Test empty allocation */
|
||||
arg1 = freerdp_addin_argv_new(0, nullptr);
|
||||
if (!arg1 || (arg1->argc != 0) || (arg1->argv))
|
||||
goto fail;
|
||||
|
||||
/* Test allocation without initializing arguments of random size > 0 */
|
||||
if (winpr_RAND(&rng, sizeof(rng)) < 0)
|
||||
goto fail;
|
||||
rng = abs(rng % 8192) + 1;
|
||||
|
||||
arg2 = freerdp_addin_argv_new(rng, nullptr);
|
||||
if (!arg2 || (arg2->argc != rng) || (!arg2->argv))
|
||||
goto fail;
|
||||
for (int x = 0; x < arg2->argc; x++)
|
||||
{
|
||||
if (arg2->argv[x])
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Test allocation with initializing arguments of size > 0 */
|
||||
arg3 = freerdp_addin_argv_new(ARRAYSIZE(param) - 1, param);
|
||||
if (!arg3 || (arg3->argc != ARRAYSIZE(param) - 1) || (!arg3->argv))
|
||||
goto fail;
|
||||
|
||||
for (int x = 0; x < arg3->argc; x++)
|
||||
{
|
||||
if (strcmp(arg3->argv[x], param[x]) != 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Input lists with nullptr elements are not allowed */
|
||||
arg4 = freerdp_addin_argv_new(ARRAYSIZE(param), param);
|
||||
if (arg4)
|
||||
goto fail;
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg1);
|
||||
freerdp_addin_argv_free(arg2);
|
||||
freerdp_addin_argv_free(arg3);
|
||||
freerdp_addin_argv_free(arg4);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_clone(void)
|
||||
{
|
||||
BOOL rc = FALSE;
|
||||
const char* param[] = { "foo:", "bar", "bla", "rdp" };
|
||||
ADDIN_ARGV* arg = nullptr;
|
||||
ADDIN_ARGV* clone = nullptr;
|
||||
ADDIN_ARGV* clone2 = nullptr;
|
||||
|
||||
arg = freerdp_addin_argv_new(ARRAYSIZE(param), param);
|
||||
if (!arg || (arg->argc != ARRAYSIZE(param)))
|
||||
goto fail;
|
||||
clone = freerdp_addin_argv_clone(arg);
|
||||
if (!clone || (clone->argc != arg->argc))
|
||||
goto fail;
|
||||
|
||||
for (int x = 0; x < arg->argc; x++)
|
||||
{
|
||||
if (strcmp(param[x], arg->argv[x]) != 0)
|
||||
goto fail;
|
||||
if (strcmp(param[x], clone->argv[x]) != 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
clone2 = freerdp_addin_argv_clone(nullptr);
|
||||
if (clone2)
|
||||
goto fail;
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg);
|
||||
freerdp_addin_argv_free(clone);
|
||||
freerdp_addin_argv_free(clone2);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_add_remove(void)
|
||||
{
|
||||
const char* args[] = { "foo", "bar", "bla", "gaga" };
|
||||
BOOL rc = FALSE;
|
||||
ADDIN_ARGV* arg = freerdp_addin_argv_new(0, nullptr);
|
||||
|
||||
if (!arg || (arg->argc != 0) || arg->argv)
|
||||
goto fail;
|
||||
for (size_t y = 0; y < ARRAYSIZE(args); y++)
|
||||
{
|
||||
const char* param = args[y];
|
||||
if (!freerdp_addin_argv_add_argument(arg, param))
|
||||
goto fail;
|
||||
if (arg->argc != (int)y + 1)
|
||||
goto fail;
|
||||
if (!arg->argv)
|
||||
goto fail;
|
||||
if (strcmp(arg->argv[y], param) != 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Try to remove non existing element, must not return TRUE */
|
||||
if (freerdp_addin_argv_del_argument(arg, "foobar"))
|
||||
goto fail;
|
||||
|
||||
/* Invalid parameters, must return FALSE */
|
||||
if (freerdp_addin_argv_del_argument(nullptr, "foobar"))
|
||||
goto fail;
|
||||
|
||||
/* Invalid parameters, must return FALSE */
|
||||
if (freerdp_addin_argv_del_argument(arg, nullptr))
|
||||
goto fail;
|
||||
|
||||
/* Remove elements one by one to test argument index move */
|
||||
for (size_t y = 0; y < ARRAYSIZE(args); y++)
|
||||
{
|
||||
const char* param = args[y];
|
||||
if (!freerdp_addin_argv_del_argument(arg, param))
|
||||
goto fail;
|
||||
for (size_t x = y + 1; x < ARRAYSIZE(args); x++)
|
||||
{
|
||||
if (strcmp(arg->argv[x - y - 1], args[x]) != 0)
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_set_argument(void)
|
||||
{
|
||||
int ret = 0;
|
||||
const char* newarg = "foobar";
|
||||
const char* args[] = { "foo", "bar", "bla", "gaga" };
|
||||
BOOL rc = FALSE;
|
||||
ADDIN_ARGV* arg = nullptr;
|
||||
|
||||
arg = freerdp_addin_argv_new(ARRAYSIZE(args), args);
|
||||
if (!arg || (arg->argc != ARRAYSIZE(args)) || !arg->argv)
|
||||
goto fail;
|
||||
|
||||
/* Check invalid parameters */
|
||||
ret = freerdp_addin_set_argument(nullptr, "foo");
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_set_argument(arg, nullptr);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
|
||||
/* Try existing parameter */
|
||||
ret = freerdp_addin_set_argument(arg, "foo");
|
||||
if ((ret != 1) || (arg->argc != ARRAYSIZE(args)))
|
||||
goto fail;
|
||||
|
||||
/* Try new parameter */
|
||||
ret = freerdp_addin_set_argument(arg, newarg);
|
||||
if ((ret != 0) || (arg->argc != ARRAYSIZE(args) + 1) ||
|
||||
(strcmp(newarg, arg->argv[ARRAYSIZE(args)]) != 0))
|
||||
goto fail;
|
||||
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_replace_argument(void)
|
||||
{
|
||||
int ret = 0;
|
||||
const char* newarg = "foobar";
|
||||
const char* args[] = { "foo", "bar", "bla", "gaga" };
|
||||
BOOL rc = FALSE;
|
||||
ADDIN_ARGV* arg = nullptr;
|
||||
|
||||
arg = freerdp_addin_argv_new(ARRAYSIZE(args), args);
|
||||
if (!arg || (arg->argc != ARRAYSIZE(args)) || !arg->argv)
|
||||
goto fail;
|
||||
|
||||
/* Check invalid parameters */
|
||||
ret = freerdp_addin_replace_argument(nullptr, "foo", newarg);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_replace_argument(arg, nullptr, newarg);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_replace_argument(arg, "foo", nullptr);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
|
||||
/* Try existing parameter */
|
||||
ret = freerdp_addin_replace_argument(arg, "foo", newarg);
|
||||
if ((ret != 1) || (arg->argc != ARRAYSIZE(args)) || (strcmp(arg->argv[0], newarg) != 0))
|
||||
goto fail;
|
||||
|
||||
/* Try new parameter */
|
||||
ret = freerdp_addin_replace_argument(arg, "lalala", newarg);
|
||||
if ((ret != 0) || (arg->argc != ARRAYSIZE(args) + 1) ||
|
||||
(strcmp(newarg, arg->argv[ARRAYSIZE(args)]) != 0))
|
||||
goto fail;
|
||||
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_set_argument_value(void)
|
||||
{
|
||||
int ret = 0;
|
||||
const char* newarg1 = "foobar";
|
||||
const char* newarg2 = "lalala";
|
||||
const char* fullnewarg1 = "foo:foobar";
|
||||
const char* fullnewarg2 = "foo:lalala";
|
||||
const char* fullnewvalue = "lalala:foobar";
|
||||
const char* args[] = { "foo", "foo:", "bar", "bla", "gaga" };
|
||||
BOOL rc = FALSE;
|
||||
ADDIN_ARGV* arg = nullptr;
|
||||
|
||||
arg = freerdp_addin_argv_new(ARRAYSIZE(args), args);
|
||||
if (!arg || (arg->argc != ARRAYSIZE(args)) || !arg->argv)
|
||||
goto fail;
|
||||
|
||||
/* Check invalid parameters */
|
||||
ret = freerdp_addin_set_argument_value(nullptr, "foo", newarg1);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_set_argument_value(arg, nullptr, newarg1);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_set_argument_value(arg, "foo", nullptr);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
|
||||
/* Try existing parameter */
|
||||
ret = freerdp_addin_set_argument_value(arg, "foo", newarg1);
|
||||
if ((ret != 1) || (arg->argc != ARRAYSIZE(args)) || (strcmp(arg->argv[1], fullnewarg1) != 0))
|
||||
goto fail;
|
||||
ret = freerdp_addin_set_argument_value(arg, "foo", newarg2);
|
||||
if ((ret != 1) || (arg->argc != ARRAYSIZE(args)) || (strcmp(arg->argv[1], fullnewarg2) != 0))
|
||||
goto fail;
|
||||
|
||||
/* Try new parameter */
|
||||
ret = freerdp_addin_set_argument_value(arg, newarg2, newarg1);
|
||||
if ((ret != 0) || (arg->argc != ARRAYSIZE(args) + 1) ||
|
||||
(strcmp(fullnewvalue, arg->argv[ARRAYSIZE(args)]) != 0))
|
||||
goto fail;
|
||||
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_replace_argument_value(void)
|
||||
{
|
||||
int ret = 0;
|
||||
const char* newarg1 = "foobar";
|
||||
const char* newarg2 = "lalala";
|
||||
const char* fullnewarg1 = "foo:foobar";
|
||||
const char* fullnewarg2 = "foo:lalala";
|
||||
const char* fullnewvalue = "lalala:foobar";
|
||||
const char* args[] = { "foo", "foo:", "bar", "bla", "gaga" };
|
||||
BOOL rc = FALSE;
|
||||
ADDIN_ARGV* arg = nullptr;
|
||||
|
||||
arg = freerdp_addin_argv_new(ARRAYSIZE(args), args);
|
||||
if (!arg || (arg->argc != ARRAYSIZE(args)) || !arg->argv)
|
||||
goto fail;
|
||||
|
||||
/* Check invalid parameters */
|
||||
ret = freerdp_addin_replace_argument_value(nullptr, "bar", "foo", newarg1);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_replace_argument_value(arg, nullptr, "foo", newarg1);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_replace_argument_value(arg, "foo", nullptr, newarg1);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
ret = freerdp_addin_replace_argument_value(arg, "bar", "foo", nullptr);
|
||||
if (ret >= 0)
|
||||
goto fail;
|
||||
|
||||
/* Try existing parameter */
|
||||
ret = freerdp_addin_replace_argument_value(arg, "bla", "foo", newarg1);
|
||||
if ((ret != 1) || (arg->argc != ARRAYSIZE(args)) || (strcmp(arg->argv[3], fullnewarg1) != 0))
|
||||
goto fail;
|
||||
ret = freerdp_addin_replace_argument_value(arg, "foo", "foo", newarg2);
|
||||
if ((ret != 1) || (arg->argc != ARRAYSIZE(args)) || (strcmp(arg->argv[0], fullnewarg2) != 0))
|
||||
goto fail;
|
||||
|
||||
/* Try new parameter */
|
||||
ret = freerdp_addin_replace_argument_value(arg, "hahaha", newarg2, newarg1);
|
||||
if ((ret != 0) || (arg->argc != ARRAYSIZE(args) + 1) ||
|
||||
(strcmp(fullnewvalue, arg->argv[ARRAYSIZE(args)]) != 0))
|
||||
goto fail;
|
||||
|
||||
rc = TRUE;
|
||||
fail:
|
||||
freerdp_addin_argv_free(arg);
|
||||
printf("%s: %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int TestAddinArgv(int argc, char* argv[])
|
||||
{
|
||||
|
||||
WINPR_UNUSED(argc);
|
||||
WINPR_UNUSED(argv);
|
||||
|
||||
if (!test_alloc())
|
||||
return -1;
|
||||
if (!test_clone())
|
||||
return -1;
|
||||
if (!test_add_remove())
|
||||
return -1;
|
||||
if (!test_set_argument())
|
||||
return -1;
|
||||
if (!test_replace_argument())
|
||||
return -1;
|
||||
if (!test_set_argument_value())
|
||||
return -1;
|
||||
if (!test_replace_argument_value())
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
317
third_party/FreeRDP/libfreerdp/common/test/TestCommonAssistance.c
vendored
Normal file
317
third_party/FreeRDP/libfreerdp/common/test/TestCommonAssistance.c
vendored
Normal file
@@ -0,0 +1,317 @@
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/print.h>
|
||||
#include <winpr/ssl.h>
|
||||
#include <winpr/wlog.h>
|
||||
#include <winpr/platform.h>
|
||||
|
||||
#include <freerdp/assistance.h>
|
||||
|
||||
static const char TEST_MSRC_INCIDENT_PASSWORD_TYPE1[] = "Password1";
|
||||
static const BYTE TEST_MSRC_INCIDENT_PASSWORD_TYPE1_ENC[32] = {
|
||||
0x3c, 0x9c, 0xae, 0xb, 0xce, 0x7a, 0xb1, 0x5c, 0x8a, 0xac, 0x1, 0xd6, 0x76, 0x4, 0x5e, 0xdf,
|
||||
0x3f, 0xfa, 0xf0, 0x92, 0xe2, 0xde, 0x36, 0x8a, 0x20, 0x17, 0xe6, 0x8a, 0xd, 0xed, 0x7c, 0x90
|
||||
};
|
||||
|
||||
static const char TEST_MSRC_INCIDENT_FILE_TYPE1[] =
|
||||
"<?xml version=\"1.0\" encoding=\"Unicode\" ?>"
|
||||
"<UPLOADINFO TYPE=\"Escalated\">"
|
||||
"<UPLOADDATA "
|
||||
"USERNAME=\"Administrator\" "
|
||||
"RCTICKET=\"65538,1,10.0.3.105:3389;winxpsp3.contoso3.com:3389,*,"
|
||||
"rb+v0oPmEISmi8N2zK/vuhgul/ABqlDt6wW0VxMyxK8=,*,*,IuaRySSbPDNna4+2mKcsKxsbJFI=\""
|
||||
"RCTICKETENCRYPTED=\"1\" "
|
||||
"DtStart=\"1314905741\" "
|
||||
"DtLength=\"180\" "
|
||||
"PassStub=\"RT=0PvIndan52*\" "
|
||||
"L=\"0\" />"
|
||||
"</UPLOADINFO>";
|
||||
|
||||
WINPR_PRAGMA_DIAG_PUSH
|
||||
WINPR_PRAGMA_DIAG_IGNORED_UNUSED_CONST_VAR
|
||||
static const BYTE TEST_MSRC_INCIDENT_EXPERT_BLOB_TYPE1[32] =
|
||||
"\x3C\x9C\xAE\x0B\xCE\x7A\xB1\x5C\x8A\xAC\x01\xD6\x76\x04\x5E\xDF"
|
||||
"\x3F\xFA\xF0\x92\xE2\xDE\x36\x8A\x20\x17\xE6\x8A\x0D\xED\x7C\x90";
|
||||
WINPR_PRAGMA_DIAG_POP
|
||||
|
||||
static const char TEST_MSRC_INCIDENT_PASSWORD_TYPE2[] = "48BJQ853X3B4";
|
||||
static const BYTE TEST_MSRC_INCIDENT_PASSWORD_TYPE2_ENC[32] = {
|
||||
0x77, 0x7d, 0xfa, 0xae, 0x90, 0x28, 0x12, 0x4d, 0xd0, 0x2e, 0xde, 0x80, 0x14, 0x22, 0x1b, 0x4a,
|
||||
0xd1, 0xf4, 0xec, 0x13, 0x85, 0x39, 0xd7, 0x33, 0xac, 0x76, 0x78, 0x95, 0xb2, 0xd8, 0x57, 0xd9
|
||||
};
|
||||
|
||||
static const char TEST_MSRC_INCIDENT_FILE_TYPE2[] =
|
||||
"<?xml version=\"1.0\"?>"
|
||||
"<UPLOADINFO TYPE=\"Escalated\">"
|
||||
"<UPLOADDATA USERNAME=\"awake\" "
|
||||
"LHTICKET=\""
|
||||
"20FCC407AA53E95F8505AB56D485D26835064B03AF86CDA326248FD304626AD4"
|
||||
"DBDBDFFE0C473228EFFF7A1E6CEB445BBEC429294BB6616BBB600854438DDFB5"
|
||||
"82FC377CF65A2060EB3221647643C9B29BF5EC320856180B34D1BE9827A528C7"
|
||||
"E8F0DCD53C8D38F974160FEE317458FAC9DBDBA7B972D21DF3BC5B1AF0E01878"
|
||||
"65F07A3B915618C03E6EAF843FC1185770A1208C29C836DBCA5A040CB276D3C4"
|
||||
"1DDE2FA8CA9627E5E74FA750A92C0E01AD6C3D1000A5B1479DEB899BF5BCD402"
|
||||
"CE3BB3BF104CE0286C3F985AA711943C88C5EEEEE86F35B63F68883A90ADBCFD"
|
||||
"CBBAE3EAB993EFD9148E1A21D092CE9498695943946236D65D20B4A38D724C61"
|
||||
"72319E38E19C04E98EBC03F56A4A190E971F8EAEBFE6B415A3A2D8F35F7BF785"
|
||||
"26B9BFAAB48D11BDD6C905EFE503D2265678E1EAD2F2F124E570667F04103180"
|
||||
"2F63587276C14E6A5AB436CE234F722CE7C9B5D244508F14C012E84A49FE6992"
|
||||
"3F30320ABB3641F1EFA66205F3EA709E7E1C3E6874BB9642486FB96D2730CDF4"
|
||||
"514AA738167F00FC13B2978AED1D6678413FDF62008B03DD729E36173BE02742"
|
||||
"B69CAD44938512D0F56335394759338AF6ADBCF39CE829116D97435085D05BB5"
|
||||
"9320A134698050DCDBE01305A6B4712FD6BD48958BD2DC497498FF35CAECC9A8"
|
||||
"2C97FD1A5B5EC4BAF5FFB75A1471B765C465B35A7C950019066BB219B391C6E9"
|
||||
"8AE8FD2038E774F36F226D9FB9A38BCC313785612165D1EF69D19E2B9CF6E0F7"
|
||||
"FE1ECCF00AB81F9E8B626363CA82FAC719A3B7D243325C9D6042B2488EC95B80"
|
||||
"A31273FF9B72FBBB86F946E6D3DF8816BE4533F0B547C8BC028309EA9784C1E6\" "
|
||||
"RCTICKET=\"65538,1,192.168.1.200:49230;169.254.6.170:49231,*,"
|
||||
"+ULZ6ifjoCa6cGPMLQiGHRPwkg6VyJqGwxMnO6GcelwUh9a6/FBq3It5ADSndmLL,"
|
||||
"*,*,BNRjdu97DyczQSRuMRrDWoue+HA=\" "
|
||||
"PassStub=\"WB^6HsrIaFmEpi\" "
|
||||
"RCTICKETENCRYPTED=\"1\" "
|
||||
"DtStart=\"1403972263\" "
|
||||
"DtLength=\"14400\" "
|
||||
"L=\"0\"/>"
|
||||
"</UPLOADINFO>";
|
||||
|
||||
/**
|
||||
* Decrypted Connection String 2:
|
||||
*
|
||||
* <E>
|
||||
* <A KH="BNRjdu97DyczQSRuMRrDWoue+HA="
|
||||
* ID="+ULZ6ifjoCa6cGPMLQiGHRPwkg6VyJqGwxMnO6GcelwUh9a6/FBq3It5ADSndmLL"/> <C> <T ID="1" SID="0"> <L
|
||||
* P="49228" N="fe80::1032:53d9:5a01:909b%3"/> <L P="49229" N="fe80::3d8f:9b2d:6b4e:6aa%6"/> <L
|
||||
* P="49230" N="192.168.1.200"/> <L P="49231" N="169.254.6.170"/>
|
||||
* </T>
|
||||
* </C>
|
||||
* </E>
|
||||
*/
|
||||
static const char connectionstr2[] =
|
||||
"<E>\n"
|
||||
"<A KH=\"YiKwWUY8Ioq5NB3wAQHSbs5kwrM=\"\n"
|
||||
"KH2=\"sha256:wKSAkAV3sBfa9WpuRFJcP9q1twJc6wOBuoJ9tsyXwpk=\"\n"
|
||||
"ID=\"8rYm30RBW8/4dAWoUsWbFCF5jno/7jr5tNpHQc2goLbw4uuBBJvLsU02YYLlBMg5\"/>\n"
|
||||
"<C>\n"
|
||||
"<T ID=\"1\" SID=\"1440550163\">\n"
|
||||
"<L P=\"49749\" N=\"2001:4898:1a:5:79e2:3356:9b22:3470\"/>\n"
|
||||
"<L P=\"49751\" N=\"172.31.250.64\"/>\n"
|
||||
"</T>\n"
|
||||
"</C>\n"
|
||||
"</E>";
|
||||
|
||||
static const char* fail_tests[] = {
|
||||
"<UPLOADINFOTYPE=\"Escalated\"><UPLOADDATARCTICKET=\"65538,1, ,*,,*,*,\"/></UPLOADINFO>",
|
||||
"<UPLOADINFO>(E><UPLOADDATA "
|
||||
"FOTYPE=\"Escalated\"æÁATAPassStub=\"␕:&A&␅RCTICKET=\"65538,1,ü,*,n,*,*,\"am␡/>␂</"
|
||||
"UPLOADINFO>"
|
||||
};
|
||||
|
||||
static const char connectionstr3[] =
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<UPLOADINFO TYPE=\"Escalated\"><UPLOADDATA USERNAME=\"fx\" "
|
||||
"LHTICKET="
|
||||
"\"F9BBA098D84E1B20E37CD0983D9336B1FF4929925FCE5F3A1A9B9A596A524F2E169AD26D84255C7E8C0B88304A4C"
|
||||
"40E0544624AD346A6828D6F2091C36C1315BD11255FE631F3A457F862FFD9948C496BC4B705B0AD2F26D0CDF7128E4"
|
||||
"8625C8C501326B33888D42C591434F7ED4BBA0CEE02C8554921E49BCF130E1961F38FD0F0B7333001E639F89471940"
|
||||
"93136CA5030EC4A92D05341488B79C40E11B28E1753F38682816EDF756CF5204943FD3F60DDD16416D220CA162B6FB"
|
||||
"D43CC00C4F9D3F9FCF68ADAF191470B75EA4E8B37D03D2B9D3D844F54597D75FFF0A6216811518A3D06B26CA95F733"
|
||||
"CCE8A46A4B1FF8F514971A1C06A8DC9D1DD0863087707045D3FCB74BB0444AF8B822FD6605DA68D8D628A7D8556212"
|
||||
"D10F5BC4B1B7905E863F51346114FFED6A46D67314F3B933DF17F8A2E5EC6DAD2904349AC710E017652171A98C8621"
|
||||
"4AF3801B1441E641CDA159BE76D8F2415129773283B5A4E0E7483580E6955B54B0E1432129612CFECD6770201F4206"
|
||||
"1732E748B7F8A0C015EA8B36610962AC208C26373A483E830C7E01330492C9CBAB308A5E19272CC06F0F8008068816"
|
||||
"78F8FB32667D876F6060C50D1A1251DDB9B339E2F846F48C0C7751BBDFF2138152B7A048AFECB31F6DE340E81EB8A4"
|
||||
"EC7F8208B81E11E13033659B885686FEDF6881355679DCD96661201E5BC59D6C6EEFA1608B9E73E75F42D51A26E236"
|
||||
"3690714D58A846B48E0AA2C753CA6347BAEA59CDCA5144527F3A69B560980BCC5DB77AC0FD1A68D19F802744D723D8"
|
||||
"6595A48D1F72DAD0E3E61BA4D37E24EAAB9F49F21753CD481D6744036CA49DA0E432B961F48810FE90EB49DB0FB450"
|
||||
"5FB316DCCAAC51E647B333EBA1C219A68F0A08BD65C9E4ED231D40EA15C2CEB80CB161495A0CADECAF2A00B5916AA9"
|
||||
"91B78C7B17F26DA880DE25DFC09D9D823E174A8401CBC846D2A8B29B6B26EE92261C71C37E3C816540F77CB6DE916B"
|
||||
"FCC7ED100949503251687B860E4A5F5B51CDADD11FF5CA408FA38E4A2AD6FA09D10E9B85523236D55132CD42936150"
|
||||
"51913820DAE06877AC2954651049A157730A1AB67BD9A258CCB3A71909A8686F6F742FBC55312B041342C5475F808A"
|
||||
"B04B629B99A1C69200740CDA5FE1602518B3117FB9835060BEF22EBAF20676662C9E0C3ED39C01E2F9A0822A2ADA07"
|
||||
"D4718A93516AA04E4527C699A00FA8AFCAC7337F8D42949B3CB9F35A19BF5AC9BBF412C9E4AE82C593897BFF81240C"
|
||||
"002486DF0F14845BB12A15966E95A9B6090C6512AF8B717F720F0CE452AA602106B65B98374CBCF9F6B5300FB077E5"
|
||||
"554B489F6913E3857E352C94929A69C86EB13A67B872BB69980B9B3A1E05D6B9483C26A0D6D83CCD4C1AB6C21BA625"
|
||||
"A5232C25BC1B7EB8B954B52D91B1BDF4277B2DCE039F4DBE2F18AE22533C2B877AB27B157ACE5DF21BC83E72104A31"
|
||||
"C253704FDB2536308280D7172313F5D19D088E4C7F4F79C4786D6C65DEAB7FC16DE107AF8C61626502FA940497987F"
|
||||
"60759878E40EDFAC98DED90BEA26E3020AA36A7307F2C9A9D5B19FAA34DF3633F643425F16A3615C996691EC705617"
|
||||
"97CEB08463CBD0150F6B4C01BF1337E3B8B5E5355F62AD1AF949FCB3671327EA5AABC90081117E6CE11C6C42CF6E0E"
|
||||
"DCB4C63EA9433D89F1030F65EDC82D45289C6367BF1E004D338CED13B7643C8708C42FF3671377A79DBFE3E4A39E19"
|
||||
"F4759B84AA9CB03D64C2DBF5D2908DE64F5534AC07C11723F3A7602E307625F86B410BC7B54D85145B9F362E181860"
|
||||
"AEF3574682CE4F3C57742870ED0B228CAC0E9183BD07BFF0435989263CA7EBF21B8CF25DBC2C7915FEB1000848A52F"
|
||||
"94E7B34A416A826BFB1792E64F1CEA7FA3222131C53FA6DE38A786C99C355FE9C9D55B91D11B19087F1574CFF28C4D"
|
||||
"AA9DE974A0939F0C13E9C408167ABAB90BD6BB25FA37B1588AAA3687AC86818543FEFD6E46D821D7F68BE1B0793585"
|
||||
"4E7A81F6C9A0965159DAFF7B0E79C89A18DA3C52D6259EA711ED6B85CCC207AA35F62CB5D48299DAD003004702716E"
|
||||
"65A96390033F8006FC7E7B1A09B9D1C6C17EC20811DE09EC19EB36844E45FCA18CF657A81E5922AB1B805721A5457E"
|
||||
"01EB86334877FEDA378EDE6190491015158194ED1DEE3A99770DB8B9A87BC9FAE29A0AC17C4963DF07109B05AABA73"
|
||||
"1A6AACDB8A02795CBDA935D51D0A7ABB35D8D1B6E598751E45BD507EC2778E285BEBAB2B50462FED1975B5A87F9751"
|
||||
"25A6F272560E756CC941CF6D22FE72F7563CB2687E56F2FA2FC07FE01F3C8E6FCF7D4ECD60C1A53B98CA57AFB5BA18"
|
||||
"97D4F530FCDEBDEB015D9CB1DE0BED20B7C3221283E292C252C742C23401B2E5A85EBD63E6916C3051FEAA1DC57975"
|
||||
"410487AD7EE6CA0A346FE44F901E8BA81A7B398E94707E094081AE6391696EC42DD3F4B9189AB2A5311811481A48FB"
|
||||
"0FAEFC1E9858547D15AA2F6FF01191F8EEC3564C59172605DA16C94F466156BE7A3E98E8C53BE50B671DEC5A3BD8A9"
|
||||
"8C2A1B3FF47D27007AB17A4A1E155E094E3EA30FF531FBF6320F23BA57B3CAF8C470E176C93FACEE829C58B2399975"
|
||||
"EBC4688B2F55132D102E83E45976C6607A57B90F43A33BCB68C03671E632B0E7C17B18406161AB46A8A0992DA7046A"
|
||||
"08135E04142B68312BE3D0F7F5BBAE914E8DC5AAD04D992DA18FAB5B01EA34A0E27B253E92BEFE607578B1C79D4DAC"
|
||||
"07DA6F92986F12AE036C227E4495662C46762E66EA3EC71C5C04BADD9DEDCAD725C16710825394179CFD17EDE482BA"
|
||||
"11C421D0B4C806A2ED963831FAB4DE14FEAA904A3C5173AB9B86FCFF81E0F60DB45182A2471BC16DA992553EAE99DD"
|
||||
"716E85DB11AC0F32BC960D6E8F6BE2250D59EDCAA69C19AF04E21362331225F94BD600EE76E1719417480AB6DC62DF"
|
||||
"958DCCE951EBC64B4600DF3A826B9E702C536C0DF9E2952EDA7FAE6076C6F25CF41C0F7751768EC3C3293D727F8541"
|
||||
"E997DA23E2D952D782B0472B3BFBC638CBDFDA43F367E3F6A7AAC9C8B07D51459432AEBB11564A669BF2EC1658B361"
|
||||
"BE29B47F905352D13705E1E7F06B68A5F247B9FFA3B917CC54F7367386502A42F32CEE474F5E4D35CB5A44C3BA2192"
|
||||
"A3F61DC334CE6D91E36D1C891E65A30C1E2B8F66A01B5DA8DDFB5CD051D61BD39B2E0516C6715F9AA7FE262BBD9BA4"
|
||||
"CE8B785B42CA9582AD5EE24F8C11D2DA0DC6383506DE46C5187C03A930E5E507812A505884121C8A93C2569B269AE7"
|
||||
"A26FDCF0BF7FA996250FFF790C3E97565B27C8DECFE5A15E2ED1A853FBF5D12207B8D3564CDD99549E508E92CB53DB"
|
||||
"F6356F6EBF03E6A6672BFDE285A3DF84105F7C7E39577838C06B50D2ABB4F1C0377D45BE016ED022804F6BD9151BCD"
|
||||
"883CE5FE8358798EE4EA3C24C67815D535CBCFA36094D7418EC104F90609C7AC008D07FDF89A6B3A0B5EC505E17DEC"
|
||||
"57DA6256F4B2CC7DFF4E643FE89E4934440E2A360F035FA9C91F0F657A88AC9E7210A9ABAAAEA26D6B717EEAF231FB"
|
||||
"79A0838B4BB85C11C9675F2BC746230F79A88137F911809C472750A5F6BB9415298C638FC3E24FA1763ACB513A4200"
|
||||
"CB0BF550BC7DE0D2DC5D45AF18FF6073D96D2E4368A637B78257D087C9A471CC88E3368E810BFC29002D86C898F75D"
|
||||
"3F6AE13648841038FDD1D3E8C4D2D5A4E1044614CAF544758A68F4947E3A3E736255CF01FE7A40A6FF136E7458F13D"
|
||||
"759086A544FA14B47155511F784A2144E2B139EC5B5F3B0CAB52E511AAF84E00ABB4115644D42B0A7F91DA53F5C54D"
|
||||
"744C583F5E838D402512A9644772E256CACCAA90ED300AE1616FDAA8309E5FB3FD92EB09F32216446CA2E737E8C136"
|
||||
"C3E773FB986060A78D87CDF7CD92B187188CA7293998F0BC33C13A2FD8C7B0A76C2DAA662F0A71965E25930294D351"
|
||||
"947DDE4800A237871F6BBFA77B7440339BFAE36035A84DA6AD87AA57FD52F7CDA342EB3D7B3E46F64592DFF327194C"
|
||||
"D80C83272B5159BD97A9254089C90E1AFC7C30265BA814ED485550E4E4157FEDB14D9FB6D05AEE5983C81E799DF134"
|
||||
"00766571BDBC8AC719AA2228C9DD592C102DE18A3F1C4B3501C6B29424B83B71D1740B1775967CFC984BC2D22C15\""
|
||||
" PassStub=\"e4=3CiFuM6h2qH\" RCTICKETENCRYPTED=\"1\" DtStart=\"1704288424\" DtLength=\"360\" "
|
||||
"L=\"0\"/>"
|
||||
"</UPLOADINFO>";
|
||||
static const char connectionpwd3[] = "4X638PTVZTKZ";
|
||||
static const BYTE connectionpwd3_enc[32] = { 0x15, 0x20, 0x04, 0x96, 0xaf, 0x33, 0xc6, 0xe0,
|
||||
0x1b, 0xbf, 0x4a, 0x15, 0xc9, 0xc1, 0xb8, 0x71,
|
||||
0x44, 0x3f, 0x2e, 0x93, 0xa8, 0x82, 0x35, 0x2b,
|
||||
0x24, 0x08, 0x06, 0x55, 0x16, 0x4e, 0x9d, 0x3b };
|
||||
|
||||
static BOOL run_test_parse(wLog* log, const char* input, size_t len, const char* password,
|
||||
BOOL expect)
|
||||
{
|
||||
rdpAssistanceFile* file = freerdp_assistance_file_new();
|
||||
if (!file)
|
||||
return FALSE;
|
||||
|
||||
const int status = freerdp_assistance_parse_file_buffer(file, input, len, password);
|
||||
const BOOL success = status >= 0;
|
||||
|
||||
freerdp_assistance_print_file(file, log, WLOG_INFO);
|
||||
freerdp_assistance_file_free(file);
|
||||
return success == expect;
|
||||
}
|
||||
|
||||
static BOOL test_file_to_settings(wLog* log, rdpAssistanceFile* file)
|
||||
{
|
||||
rdpSettings* settings = freerdp_settings_new(0);
|
||||
if (!settings)
|
||||
return FALSE;
|
||||
const BOOL rc = freerdp_assistance_populate_settings_from_assistance_file(file, settings);
|
||||
freerdp_settings_free(settings);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_file_from_buffer(wLog* log, const char* data, size_t size, const char* pwd,
|
||||
const BYTE* enc, size_t encsize)
|
||||
{
|
||||
BOOL rc = FALSE;
|
||||
int status = 0;
|
||||
char* pass = nullptr;
|
||||
char* expertBlob = nullptr;
|
||||
const char* EncryptedPassStub = nullptr;
|
||||
size_t EncryptedPassStubLength = 0;
|
||||
rdpAssistanceFile* file = freerdp_assistance_file_new();
|
||||
|
||||
if (!file)
|
||||
return FALSE;
|
||||
|
||||
status = freerdp_assistance_parse_file_buffer(file, data, size, pwd);
|
||||
WLog_Print(log, WLOG_INFO, "freerdp_assistance_parse_file_buffer: %d", status);
|
||||
|
||||
if (status < 0)
|
||||
goto fail;
|
||||
|
||||
freerdp_assistance_print_file(file, WLog_Get("foo"), WLOG_INFO);
|
||||
|
||||
if (!freerdp_assistance_get_encrypted_pass_stub(file, &EncryptedPassStub,
|
||||
&EncryptedPassStubLength))
|
||||
goto fail;
|
||||
|
||||
if (EncryptedPassStubLength > 0)
|
||||
{
|
||||
pass = freerdp_assistance_bin_to_hex_string(EncryptedPassStub, EncryptedPassStubLength);
|
||||
|
||||
if (!pass)
|
||||
goto fail;
|
||||
|
||||
WLog_Print(log, WLOG_INFO, "freerdp_assistance_decrypt: %d %s [%" PRIdz "]", status, pass,
|
||||
EncryptedPassStubLength);
|
||||
expertBlob = freerdp_assistance_construct_expert_blob("Edgar Olougouna", pass);
|
||||
|
||||
WLog_Print(log, WLOG_INFO, "expertBlob='%s'", expertBlob);
|
||||
}
|
||||
if (encsize != EncryptedPassStubLength)
|
||||
goto fail;
|
||||
if (encsize > 0)
|
||||
{
|
||||
if (memcmp(EncryptedPassStub, enc, encsize) != 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
rc = test_file_to_settings(log, file);
|
||||
fail:
|
||||
freerdp_assistance_file_free(file);
|
||||
free(pass);
|
||||
free(expertBlob);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static BOOL test_msrsc_incident_file_type1(wLog* log)
|
||||
{
|
||||
return test_file_from_buffer(
|
||||
log, TEST_MSRC_INCIDENT_FILE_TYPE1, sizeof(TEST_MSRC_INCIDENT_FILE_TYPE1),
|
||||
TEST_MSRC_INCIDENT_PASSWORD_TYPE1, TEST_MSRC_INCIDENT_PASSWORD_TYPE1_ENC,
|
||||
sizeof(TEST_MSRC_INCIDENT_PASSWORD_TYPE1_ENC));
|
||||
}
|
||||
|
||||
static BOOL test_msrsc_incident_file_type2(wLog* log)
|
||||
{
|
||||
if (!test_file_from_buffer(log, connectionstr2, sizeof(connectionstr2),
|
||||
TEST_MSRC_INCIDENT_PASSWORD_TYPE2, nullptr, 0))
|
||||
return FALSE;
|
||||
if (!test_file_from_buffer(log, connectionstr3, sizeof(connectionstr3), connectionpwd3,
|
||||
connectionpwd3_enc, sizeof(connectionpwd3_enc)))
|
||||
return FALSE;
|
||||
if (!test_file_from_buffer(
|
||||
log, TEST_MSRC_INCIDENT_FILE_TYPE2, sizeof(TEST_MSRC_INCIDENT_FILE_TYPE2),
|
||||
TEST_MSRC_INCIDENT_PASSWORD_TYPE2, TEST_MSRC_INCIDENT_PASSWORD_TYPE2_ENC,
|
||||
sizeof(TEST_MSRC_INCIDENT_PASSWORD_TYPE2_ENC)))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int TestCommonAssistance(int argc, char* argv[])
|
||||
{
|
||||
wLog* log = nullptr;
|
||||
WINPR_UNUSED(argc);
|
||||
WINPR_UNUSED(argv);
|
||||
log = WLog_Get(__func__);
|
||||
winpr_InitializeSSL(WINPR_SSL_INIT_DEFAULT);
|
||||
|
||||
for (size_t x = 0; x < ARRAYSIZE(fail_tests); x++)
|
||||
{
|
||||
const char* test = fail_tests[x];
|
||||
const size_t len = strlen(test);
|
||||
|
||||
if (!run_test_parse(log, test, len + 1, nullptr, FALSE))
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!test_msrsc_incident_file_type1(log))
|
||||
{
|
||||
WLog_Print(log, WLOG_ERROR, "test_msrsc_incident_file_type1 failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!test_msrsc_incident_file_type2(log))
|
||||
{
|
||||
WLog_Print(log, WLOG_ERROR, "test_msrsc_incident_file_type2 failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
8
third_party/FreeRDP/libfreerdp/common/test/TestFuzzCommonAssistanceBinToHexString.c
vendored
Normal file
8
third_party/FreeRDP/libfreerdp/common/test/TestFuzzCommonAssistanceBinToHexString.c
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
#include <freerdp/assistance.h>
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
|
||||
{
|
||||
char* pass = freerdp_assistance_bin_to_hex_string((void*)Data, Size);
|
||||
free(pass);
|
||||
return 0;
|
||||
}
|
||||
16
third_party/FreeRDP/libfreerdp/common/test/TestFuzzCommonAssistanceHexStringToBin.c
vendored
Normal file
16
third_party/FreeRDP/libfreerdp/common/test/TestFuzzCommonAssistanceHexStringToBin.c
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
#include <freerdp/assistance.h>
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
|
||||
{
|
||||
char* buf = calloc(Size + 1, sizeof(char));
|
||||
if (buf == nullptr)
|
||||
return 0;
|
||||
memcpy(buf, Data, Size);
|
||||
buf[Size] = '\0';
|
||||
|
||||
BYTE* pass = freerdp_assistance_hex_string_to_bin((void*)buf, &Size);
|
||||
free(pass);
|
||||
free(buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
31
third_party/FreeRDP/libfreerdp/common/test/TestFuzzCommonAssistanceParseFileBuffer.c
vendored
Normal file
31
third_party/FreeRDP/libfreerdp/common/test/TestFuzzCommonAssistanceParseFileBuffer.c
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#include <freerdp/assistance.h>
|
||||
|
||||
static int parse_file_buffer(const uint8_t* Data, size_t Size)
|
||||
{
|
||||
static const char TEST_MSRC_INCIDENT_PASSWORD_TYPE2[] = "48BJQ853X3B4";
|
||||
int status = -1;
|
||||
rdpAssistanceFile* file = freerdp_assistance_file_new();
|
||||
if (!file)
|
||||
return -1;
|
||||
|
||||
char* buf = calloc(Size + 1, sizeof(char));
|
||||
if (buf == nullptr)
|
||||
goto err;
|
||||
memcpy(buf, Data, Size);
|
||||
buf[Size] = '\0';
|
||||
|
||||
status = freerdp_assistance_parse_file_buffer(file, buf, Size + 1,
|
||||
TEST_MSRC_INCIDENT_PASSWORD_TYPE2);
|
||||
|
||||
err:
|
||||
freerdp_assistance_file_free(file);
|
||||
free(buf);
|
||||
|
||||
return status >= 0 ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size)
|
||||
{
|
||||
parse_file_buffer(Data, Size);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user