Github user necouchman commented on a diff in the pull request:
https://github.com/apache/guacamole-server/pull/154#discussion_r172006140
--- Diff: src/protocols/rdp/guac_rdpdr/rdpdr_printer.c ---
@@ -141,18 +142,23 @@ static void
guac_rdpdr_device_printer_announce_handler(guac_rdpdr_device* device
Stream_Write(output_stream, "PRN1\0\0\0\0", 8); /* DOS name */
/* Printer data */
- Stream_Write_UINT32(output_stream, 24 + GUAC_PRINTER_DRIVER_LENGTH +
GUAC_PRINTER_NAME_LENGTH);
+ int settings_length = strlen(device->device_name);
+ int printer_name_length = (settings_length + 1) * 2;
+ char* printer_name = malloc(printer_name_length);
+ guac_rdp_utf8_to_utf16((const unsigned char*)device->device_name,
--- End diff --
Hmmm...okay. I haven't seen any issue with it behaving improperly, but
I've added the null terminator explicitly to the end of the string. Doesn't
feel very elegant, but it appears to work.
---