[PATCH weston] input: Don't test keyboard/pointer/touch pointers

Hardening rdp.effort at gmail.com
Thu Jan 29 15:32:18 PST 2015


Le 29/01/2015 18:39, Derek Foreman a écrit :
> Keyboards and pointers aren't freed when devices are removed,
> so we should really be testing keyboard_device_count and
> pointer_device_count in most cases, not the actual pointers.
> Otherwise we end up with different behaviour after removing a
> device than we had before it was inserted.
> 
> There are some cases (new device setup) where the pointers still
> need to be tested directly.
> 

Hello Derek,
I have tested your patch and for me it doesn't solve the problem of
disappearing seats. I have a quite simple test case to reproduce seat
arrival / leaving:
* launch weston with valgrind (to have it really slow) => valgrind
./weston --backend=rdp-backend.so --port=3389 --rdp-tls-cert=cert.pem
--rdp-tls-key=private.pem --width=800 --height=600 ;
* launch a lot of xfreerdp connections => for x in `seq 0 10`; do
xfreerdp `hostname` & done ;
* when a new xfreerdp window appears kill a previous one, and...

crash !!!

I have added some weston_log(), printing when a seat is freed and when a
seat is retrieved using wl_resource_get_user_data(). And for me the
problem is that we retrieve a released seat pointer, so IMHO accessing
seat->keyboard_device_count instead of seat->keyboard will not solve the
root cause of the problem. On IRC people seemed to confirm this.

Anyway I don't really see how to fix that !

Regards

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



More information about the wayland-devel mailing list