diff --git a/crates/ironrdp-rdpdr/src/lib.rs b/crates/ironrdp-rdpdr/src/lib.rs index 6fd1a4ea3..ebdd74e70 100644 --- a/crates/ironrdp-rdpdr/src/lib.rs +++ b/crates/ironrdp-rdpdr/src/lib.rs @@ -2,7 +2,7 @@ //! [[MS-RDPEFS]: Remote Desktop Protocol: File System Virtual Channel Extension](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/34d9de58-b2b5-40b6-b970-f82d4603bdb5) mod pdu; -use crate::pdu::efs::{ClientNameRequest, Component, PacketId, SharedHeader, VersionAndIdPdu, VersionAndIdPduKind}; +use crate::pdu::efs::{ClientNameRequest, Component, PacketId, SharedHeader, VersionAndIdPdu, VersionAndIdPduKind, ClientNameRequestUnicodeFlag}; use ironrdp_pdu::{cursor::ReadCursor, gcc::ChannelName, PduEncode, PduResult}; use ironrdp_svc::{AsAny, CompressionCondition, StaticVirtualChannel}; use std::{any::Any, vec}; @@ -44,7 +44,8 @@ impl Rdpdr { }; trace!("sending {:?}", client_announce_reply); - let client_name_request = ClientNameRequest::Unicode(self.computer_name.clone()); + let client_name_request = + ClientNameRequest::new(self.computer_name.clone(), ClientNameRequestUnicodeFlag::Unicode); trace!("sending {:?}", client_name_request); Ok(vec![Box::new(client_announce_reply), Box::new(client_name_request)]) diff --git a/crates/ironrdp-rdpdr/src/pdu/efs.rs b/crates/ironrdp-rdpdr/src/pdu/efs.rs index 694acff8a..371aa128a 100644 --- a/crates/ironrdp-rdpdr/src/pdu/efs.rs +++ b/crates/ironrdp-rdpdr/src/pdu/efs.rs @@ -166,12 +166,17 @@ impl PduEncode for VersionAndIdPdu { /// [2.2.2.4 Client Name Request (DR_CORE_CLIENT_NAME_REQ)](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpefs/902497f1-3b1c-4aee-95f8-1668f9b7b7d2) #[derive(Debug)] pub enum ClientNameRequest { - #[allow(dead_code)] Ascii(String), Unicode(String), } impl ClientNameRequest { + pub fn new(computer_name: String, kind: ClientNameRequestUnicodeFlag) -> Self { + match kind { + ClientNameRequestUnicodeFlag::Ascii => ClientNameRequest::Ascii(computer_name), + ClientNameRequestUnicodeFlag::Unicode => ClientNameRequest::Unicode(computer_name), + } + } fn header(&self) -> SharedHeader { SharedHeader { component: Component::RDPDR_CTYP_CORE, @@ -216,7 +221,7 @@ impl PduEncode for ClientNameRequest { #[repr(u32)] #[derive(Debug, Clone, Copy)] -enum ClientNameRequestUnicodeFlag { +pub enum ClientNameRequestUnicodeFlag { Ascii = 0x0, Unicode = 0x1, }