On Mon, Aug 31, 2020 at 1:59 PM JonVol <jon...@gmail.com> wrote:

> ...
> Using valgrind we have tracked the problem to guac_rdpdr_fs_process_read
> (rdpdr-fs-messages.c). Seems that the wStream object created via the call
> to
> guac_rdpdr_new_io_completion and is subsequently passed over to freerdp in
> guac_rdp_common_svc_write (common-svc.c) never gets freed by freerdp.
>

What version of FreeRDP are you building against?

>From the body of the function in question [1]:

    /* NOTE: Data sent via pVirtualChannelWriteEx MUST always be dynamically
     * allocated, as it will be automatically freed using free(). If
provided,
     * the last parameter (user data) MUST be a pointer to a wStream, as it
     * will automatically be freed by FreeRDP using Stream_Free() */

It's possible that the internal behavior of pVirtualChannelWriteEx() has
changed and the wStream is no longer automatically freed. This would be
unfortunate, but not unprecedented. We already need a version check within
our configure.ac to test just how much will truly be freed by Bitmap_Free()
[2]. It may be that another change requires the same sort of check
for pVirtualChannelWriteEx().

- Mike

[1]
https://github.com/apache/guacamole-server/blob/382d72a26a04008aa936680deed00e3a31086b1e/src/protocols/rdp/channels/common-svc.c#L92-L98
[2]
https://github.com/apache/guacamole-server/blob/382d72a26a04008aa936680deed00e3a31086b1e/configure.ac#L626-L648

Reply via email to