[channels,rdpdr] FILE_DIRECTORY_INFORMATION::FileName as WCHAR

This commit is contained in:
akallabeth
2025-12-12 19:25:51 +01:00
parent b160ea80e8
commit 9e32181a54
4 changed files with 13 additions and 1 deletions

View File

@@ -21,4 +21,5 @@ set(${MODULE_PREFIX}_SRCS rdpdr_main.c rdpdr_main.h)
set(${MODULE_PREFIX}_LIBS freerdp) set(${MODULE_PREFIX}_LIBS freerdp)
option(WITH_WCHAR_FILE_DIRECTORY_INFORMATION "Build with WCHAR FILE_DIRECTORY_INFORMATION::FileName" OFF)
add_channel_server_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE "VirtualChannelEntry") add_channel_server_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE "VirtualChannelEntry")

View File

@@ -2344,7 +2344,7 @@ static UINT rdpdr_server_read_file_directory_information(wLog* log, wStream* s,
if (fileNameLength / sizeof(WCHAR) > ARRAYSIZE(fdi->FileName)) if (fileNameLength / sizeof(WCHAR) > ARRAYSIZE(fdi->FileName))
return ERROR_INVALID_DATA; return ERROR_INVALID_DATA;
#if defined(__MINGW32__) #if defined(__MINGW32__) || defined(WITH_WCHAR_FILE_DIRECTORY_INFORMATION)
if (Stream_Read_UTF16_String(s, fdi->FileName, fileNameLength / sizeof(WCHAR))) if (Stream_Read_UTF16_String(s, fdi->FileName, fileNameLength / sizeof(WCHAR)))
return ERROR_INVALID_DATA; return ERROR_INVALID_DATA;
#else #else

View File

@@ -239,4 +239,10 @@
#cmakedefine WITHOUT_FREERDP_3x_DEPRECATED #cmakedefine WITHOUT_FREERDP_3x_DEPRECATED
#endif #endif
/** Build FILE_DIRECTORY_INFORMATION::FileName with type WCHAR instead of char
*
* @since version 3.20.0
*/
#cmakedefine WITH_WCHAR_FILE_DIRECTORY_INFORMATION
#endif /* FREERDP_CONFIG_H */ #endif /* FREERDP_CONFIG_H */

View File

@@ -24,6 +24,7 @@
#define FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H #define FREERDP_CHANNEL_RDPDR_SERVER_RDPDR_H
#include <freerdp/api.h> #include <freerdp/api.h>
#include <freerdp/config.h>
#include <freerdp/types.h> #include <freerdp/types.h>
#include <freerdp/channels/wtsvc.h> #include <freerdp/channels/wtsvc.h>
#include <freerdp/channels/rdpdr.h> #include <freerdp/channels/rdpdr.h>
@@ -59,7 +60,11 @@ typedef struct
LARGE_INTEGER EndOfFile; LARGE_INTEGER EndOfFile;
LARGE_INTEGER AllocationSize; LARGE_INTEGER AllocationSize;
UINT32 FileAttributes; UINT32 FileAttributes;
#if defined(WITH_WCHAR_FILE_DIRECTORY_INFORMATION)
WCHAR FileName[512];
#else
char FileName[512]; char FileName[512];
#endif
} FILE_DIRECTORY_INFORMATION; } FILE_DIRECTORY_INFORMATION;
#endif #endif