> > > >> It's interesting that XRDP is still clearly attempting to read things as >> UTF-16 here, but if that's failing for unmodified Guacamole, too, then it >> must be reading a field which we are not encoding as UTF-16 already (since >> the name of Guacamole's filesystem is definitely pre-encoded as UTF-16 at >> the moment). Perhaps we're wrong in the handling of whichever value is >> being used by XRDP, too? >> >> > I'm going to try to stand up a XRDP test server tomorrow and see if I can > test a few things and get some findings consistent with Amarjeet's > results. This point actually puzzles me a little bit, particularly since > XRDP apparently works fine with xfreerdp, which does not UTF-16 encode its > filesystem name parameter. Maybe with a few more test cases we can find > the illusive pattern. > > Or we'll just further confuse ourselves ;-). > > -Nick >
It looks to me like xrdp just reads the "PreferredDosName" setting and doesn't even bother to try to enumerate the DeviceData: https://github.com/neutrinolabs/xrdp/blob/5daa09171e1e6e65a1a3ab969775fd f8affffc37/sesman/chansrv/devredir.c#L691 In my testing, with my changes for GUACAMOLE-446, it doesn't matter what I set the name of the drive to in Guacamole, it always shows up as "GUAC" in the XRDP redirected filesystem directory. I can't find the exact place in the guacd code where the PreferredDOSName field gets set, but it looks like maybe it just uses the GUAC_OS_TYPE define from rdpdr_messages.h: https://github.com/apache/guacamole-server/blob/ bc5b01d4d8ab0c3c89a08007316d33012261f6b3/src/protocols/rdp/ guac_rdpdr/rdpdr_messages.h#L71 ?? The PreferredDOSName field is supposed to be ASCII, 8 characters, at most, and *not* null-terminated... So, whatever changes get made in -446 should *not* adversely impact XRDP, as far as I can tell. Also, I tested xfreerdp with xrdp, and, when you specify a filesytem name longer than 8 characters, it just truncates it at 8 ("temporary_files" turned into "temporar"). My guess is that xfreerdp is just taking the command line argument for the filesystem name and truncating it to 8 characters for the preferred DOS name. -Nick