[PATCH 1/1] Add a FreeRds backend, take 3

Hardening rdp.effort at gmail.com
Mon Dec 23 14:17:50 PST 2013


Le 22/12/2013 23:52, Mariusz Ceier a écrit :
> Hello,
>     I have installed freerdp with freerds and pysession-manager.
> Applied this patch in weston, and configured weston as static content
> provider for pysession-manager (both as greeter and desktop).
> Here, I have some results after testing:
>
> 1) When using remmina as a client:
>    a) With 1 connection - desktop shows up properly and it's possible
> to interact with weston and wayland clients.
>    b) With 2 or more connections simultaneously - only last connection
> reacts to input - it seems, there's only 1 seat for all connections,
> and only last connection owns it ?

This is the expected behaviour, there can be only one connection at once.


>    c) After disconnecting, and during weston shutdown, text-backend.c
> tries to use input_method structure in unbind_input_method function,
>       after freeing it in input_method_notifier_destroy function,
> here's backtrace:
> ==25237== Invalid read of size 8
> ==25237==    at 0x41D49F: unbind_input_method (text-backend.c:750)
> ==25237==    by 0x4E3B3F8: destroy_resource (wayland-server.c:533)
> ==25237==    by 0x4E416D9: for_each_helper (wayland-util.c:353)
> ==25237==    by 0x4E41715: wl_map_for_each (wayland-util.c:359)
> ==25237==    by 0x4E3B718: wl_client_destroy (wayland-server.c:673)
> ==25237==    by 0x41D9FE: text_backend_notifier_destroy (text-backend.c:938)
> ==25237==    by 0x408248: wl_signal_emit (wayland-server.h:260)
> ==25237==    by 0x411C60: main (compositor.c:4248)
> ==25237==  Address 0x68cf830 is 112 bytes inside a block of size 120 free'd
> ==25237==    at 0x4C2B0CC: free (vg_replace_malloc.c:468)
> ==25237==    by 0x41D627: input_method_notifier_destroy (text-backend.c:804)
> ==25237==    by 0x411D78: wl_signal_emit (wayland-server.h:260)
> ==25237==    by 0x416C1A: weston_seat_release (input.c:2199)
> ==25237==    by 0x6A3DB89: freerds_kill_client (compositor-freerds.c:871)
> ==25237==    by 0x6A3DF31: freerds_named_pipe_activity
> (compositor-freerds.c:948)
> ==25237==    by 0x4E3D7F7: wl_event_source_fd_dispatch (event-loop.c:86)
> ==25237==    by 0x4E3E1A8: wl_event_loop_dispatch (event-loop.c:421)
> ==25237==    by 0x4E3BFEC: wl_display_run (wayland-server.c:961)
> ==25237==    by 0x411C3F: main (compositor.c:4242)
>
> I don't know which backend - freerds or text - does here something wrong.

Perhaps it is a bug in the FreeRds backend, but i saw some similar 
backtrace with the RDP compositor. I'm not sure the seat releasing is 
really safe.

>
> 2) When using windows remote desktop client, weston exits after
> accepting connection due to SIGPIPE signal. Here's backtrace:
> ==31717==
> ==31717== Process terminating with default action of signal 13 (SIGPIPE)
> ==31717==    at 0x6080AD0: __write_nocancel (syscall-template.S:81)
> ==31717==    by 0x6A3C156: freerds_send_stream (compositor-freerds.c:130)
> ==31717==    by 0x6A3C4A4: freerds_refresh_region (compositor-freerds.c:186)
> ==31717==    by 0x6A3DA19: freerds_treat_message (compositor-freerds.c:821)
> ==31717==    by 0x6A3DF0A: freerds_client_activity (compositor-freerds.c:920)
> ==31717==    by 0x4E3D7F7: wl_event_source_fd_dispatch (event-loop.c:86)
> ==31717==    by 0x4E3E1A8: wl_event_loop_dispatch (event-loop.c:421)
> ==31717==    by 0x4E3BFEC: wl_display_run (wayland-server.c:961)
> ==31717==    by 0x411C3F: main (compositor.c:4242)
>
> I can provide more detailed logs, if anyone is interested.
>

Yes please send them.

Regards, thanks for testing and the feedback.

-- 
David FORT
website: http://www.hardening-consulting.com/


More information about the wayland-devel mailing list