<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - NULL dereference in weston_pointer_send_frame with RDP backend"
href="https://bugs.freedesktop.org/show_bug.cgi?id=93833#c5">Comment # 5</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - NULL dereference in weston_pointer_send_frame with RDP backend"
href="https://bugs.freedesktop.org/show_bug.cgi?id=93833">bug 93833</a>
from <span class="vcard"><a class="email" href="mailto:lnicola@dend.ro" title="Laurentiu Nicola <lnicola@dend.ro>"> <span class="fn">Laurentiu Nicola</span></a>
</span></b>
<pre>(In reply to Jonas Ådahl from <a href="show_bug.cgi?id=93833#c3">comment #3</a>)
<span class="quote">> (In reply to Laurentiu Nicola from <a href="show_bug.cgi?id=93833#c2">comment #2</a>)
> > Connecting with freerdp seems to work, at least with my patch applied.
>
> Do you have that patch somewhere?</span >
Sorry, what I meant is that even after fixing the crash here (see attached
patch), weston still crashes with mstsc, while it works with wfreerdp. When I
made that comment I didn't know whether connecting with wfreerdp worked without
my initial patch.
I tested it in the meanwhile and:
1. the original code crashes with both wfreerdp and mstsc
2. with my fix, wfreerdp can connect, while mstsc can't:
[08:12:30.778] kbd_layout:0x409 kbd_type:0x7 kbd_subType:0x0
kbd_functionKeys:0xc
[08:12:30.778] xf_peer_activate: matching layout=us variant=(null)
[08:12:30.886] unable to checkDescriptor for 0x731010
[Thread 0x7fffe860a700 (LWP 18653) exited]
[Thread 0x7fffe7e09700 (LWP 18652) exited]
[Thread 0x7fffe7608700 (LWP 18651) exited]
[Thread 0x7fffe6e07700 (LWP 18650) exited]
[08:12:30.889] input_method disconnected, respawning...
[08:12:30.889] launching '/usr/lib/weston/weston-keyboard'
wl_registry@2: error 0: invalid global wl_seat (14)
[08:12:30.893] Error: /usr/lib/weston/weston-desktop-shell apparently cannot
run at all.
Quitting...wl_registry@2: error 0: invalid global wl_seat (14)
[Inferior 1 (process 18640) exited normally]
3. there are a few other places in the same file that lack the same NULL check
I'm not familiar with the code, so I don't know whether focus_client should be
NULL.
PS: while toying with it, I also got another crash:
Program received signal SIGSEGV, Segmentation fault.
weston_compositor_wake (compositor=compositor@entry=0x0) at
../src/compositor.c:3894
3894 uint32_t old_state = compositor->state;
(gdb) bt
#0 weston_compositor_wake (compositor=compositor@entry=0x0) at
../src/compositor.c:3894
#1 0x00000000004131c3 in notify_motion_absolute (seat=seat@entry=0x71c608,
time=2089892085, x=x@entry=143872, y=y@entry=84992) at ../src/input.c:1281
#2 0x00007ffff61c4e3b in xf_mouseEvent (input=<optimized out>,
flags=<optimized out>, x=<optimized out>, y=<optimized out>) at
../src/compositor-rdp.c:956
#3 0x00007ffff5f0f61c in fastpath_recv_inputs () from
/usr/lib/libfreerdp.so.2.0
#4 0x00007ffff5f1f1b7 in ?? () from /usr/lib/libfreerdp.so.2.0
#5 0x00007ffff5f1f7a8 in ?? () from /usr/lib/libfreerdp.so.2.0
#6 0x00007ffff5f124f0 in transport_check_fds () from
/usr/lib/libfreerdp.so.2.0
#7 0x00007ffff5f0b338 in rdp_check_fds () from /usr/lib/libfreerdp.so.2.0
#8 0x00007ffff5f1ef23 in ?? () from /usr/lib/libfreerdp.so.2.0
#9 0x00007ffff61c4c88 in rdp_client_activity (fd=<optimized out>,
mask=<optimized out>, data=0x730ec0) at ../src/compositor-rdp.c:658
#10 0x00007ffff7bd2462 in wl_event_loop_dispatch () from
/usr/lib/libwayland-server.so.0
#11 0x00007ffff7bd0cc5 in wl_display_run () from
/usr/lib/libwayland-server.so.0
#12 0x000000000041c22b in main (argc=1, argv=0x7fffffffe4d8) at
../src/main.c:859
(gdb) l
3889 * Restarts the idle timer.
3890 */
3891 WL_EXPORT void
3892 weston_compositor_wake(struct weston_compositor *compositor)
3893 {
3894 uint32_t old_state = compositor->state;
3895
3896 /* The state needs to be changed before emitting the wake
3897 * signal because that may try to schedule a repaint which
3898 * will not work if the compositor is still sleeping */
(gdb) p compositor
$1 = (struct weston_compositor *) 0x0</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>