diff --git a/src/protocols/rdp/guac_rdpdr/rdpdr_fs.h b/src/protocols/rdp/guac_rdpdr/rdpdr_fs.h index 864ee1d8..561afe52 100644 --- a/src/protocols/rdp/guac_rdpdr/rdpdr_fs.h +++ b/src/protocols/rdp/guac_rdpdr/rdpdr_fs.h @@ -125,6 +125,12 @@ #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 #define FILE_ATTRIBUTE_NORMAL 0x00000080 +/* + * Filesystem attributes. + */ + +#define FILE_UNICODE_ON_DISK 0x00000004 + #define SEC_TO_UNIX_EPOCH 11644473600 /** diff --git a/src/protocols/rdp/guac_rdpdr/rdpdr_fs_messages_vol_info.c b/src/protocols/rdp/guac_rdpdr/rdpdr_fs_messages_vol_info.c index 44f6bd15..cf923456 100644 --- a/src/protocols/rdp/guac_rdpdr/rdpdr_fs_messages_vol_info.c +++ b/src/protocols/rdp/guac_rdpdr/rdpdr_fs_messages_vol_info.c @@ -85,9 +85,19 @@ void guac_rdpdr_fs_process_query_device_info(guac_rdpdr_device* device, wStream* void guac_rdpdr_fs_process_query_attribute_info(guac_rdpdr_device* device, wStream* input_stream, int file_id, int completion_id) { - /* STUB */ - guac_client_log_error(device->rdpdr->client, - "Unimplemented stub: guac_rdpdr_fs_query_attribute_info"); + + wStream* output_stream = guac_rdpdr_new_io_completion(device, + completion_id, STATUS_SUCCESS, 16 + GUAC_FILESYSTEM_NAME_LENGTH); + + Stream_Write_UINT32(output_stream, 12 + GUAC_FILESYSTEM_NAME_LENGTH); + Stream_Write_UINT32(output_stream, FILE_UNICODE_ON_DISK); /* FileSystemAttributes */ + Stream_Write_UINT32(output_stream, GUAC_RDPDR_FS_MAX_PATH ); /* MaximumComponentNameLength */ + Stream_Write_UINT32(output_stream, GUAC_FILESYSTEM_NAME_LENGTH); + Stream_Write(output_stream, GUAC_FILESYSTEM_NAME, + GUAC_FILESYSTEM_NAME_LENGTH); + + svc_plugin_send((rdpSvcPlugin*) device->rdpdr, output_stream); + } void guac_rdpdr_fs_process_query_full_size_info(guac_rdpdr_device* device, wStream* input_stream,