Commit Graph

23 Commits

Author SHA1 Message Date
Derek Foreman
aa507417c2 xwm: Fix pasting in some cases
I guess this reverts commit 73bdc0ce85
"xwm: Fix fd leak in weston_wm_send_data()"

That commit closes the send half of a pipe in weston_wm_send_data,
claiming that it's dup()licated later, and we'll leak the fd if
we don't close it.

That may have been true at the time? But currently that fd is only
duplicated by wl_event_loop_add_fd() in its normal operation, and
closing our original before that fd handler ever fires results
in an EBADF on write, and the data never reaching its intended
destination.

Worse, by the time that handler is called there might be another
use for that fd, and we could push data into it and close it.

To provoke the problem, launch an app like FireFox over Xwayland,
cut something to the clipboard, then close the app (this is the
path where the wm has stored the clipboard contents and the
app has gone away). relaunch it and paste the clipboard content
back in. clipboard_client_data() will EBADF on write, and the
data won't be pasted.

Reported-by: Hideyuki Nagase <hideyukn@microsoft.com>
Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2022-05-31 17:57:03 +00:00
shierote
f2d6d21eec libweston: correct argument name in the handler of wl_data_source.accept
Signed-off-by: Taishi Eguchi <taishi2060@gmail.com>
2022-04-14 12:05:57 +00:00
Guillaume Champagne
f1e8fc9dbf libweston: add missing include
Fixes missing prototypes compilation warnings emitted when a function
is defined before its prototype is declared.

These warnings were introduced over time since the switch to meson
because the -Wmissing-protoypes was not included in the compilation
arguments.

Signed-off-by: Guillaume Champagne <champagne.guillaume.c@gmail.com>
2020-01-29 09:49:41 +00:00
Antonio Borneo
3957863667 log: remove "%m" from format strings by using strerror(errno)
The printf() format specifier "%m" is a glibc extension to print
the string returned by strerror(errno). While supported by other
libraries (e.g. uClibc and musl), it is not widely portable.

In Weston code the format string is often passed to a logging
function that calls other syscalls before the conversion of "%m"
takes place. If one of such syscall modifies the value in errno,
the conversion of "%m" will incorrectly report the error string
corresponding to the new value of errno.

Remove all the occurrences of the specifier "%m" in Weston code
by using directly the string returned by strerror(errno).
While there, fix some minor indentation issue.

Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
2019-05-02 22:10:30 +02:00
Emmanuel Gil Peyrot
426c24673f Fix typos all around (thanks codespell!) 2019-02-20 16:47:35 +01:00
Greg V
4253f23576 xwayland: fix clipboard related crash 2019-02-16 09:37:30 +00:00
Pekka Paalanen
b3b0065598 xwm: move FILE to the callers of dump_property()
This is preparation for using the weston-debug infrastructure for
WM_DEBUG. dump_property() may be called from different debugging
contexts and often needs to be prefixed with more information.

An alternative to this patch would be to pass in the weston_debug_scope
as an argument to dump_property(), but then all callers would need to be
converted to weston-debug infra in a single commit.

Therefore require the callers to provide the FILE* to print to.

Signed-off-by: Pekka Paalanen <pq@iki.fi>
Signed-off-by: Maniraj Devadoss <Maniraj.Devadoss@in.bosch.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2018-09-17 13:29:48 +01:00
Greg V
3ea5437dbd xwayland/selection: do not remove NULL property_source
Happened mostly with neovim's xclip usage.

[daniels: Added more cases.]

Reviewed-by: Daniel Stone <daniels@collabora.com>
2018-07-22 11:37:58 +01:00
Derek Foreman
4b72ff0e89 xwayland: Fix crash on weston shutdown
commit e7fff215ad made initializing the
selection_listener conditional, but didn't make its clean-up
conditional at shutdown.  Simply initializing the listener's list
link at init time makes this harmless.

To see this, run weston -Bheadless-backend.so and then connect to it
with an X client.  When killing weston it will attempt shutdown but
die with a segfault.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2018-02-07 10:56:37 -06:00
Abdur Rehman
b8b150bf6f xwayland: fix three minor typos
Signed-off-by: Abdur Rehman <arehmanq199@gmail.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
2017-01-03 11:59:19 +00:00
Tom Hochstein
e7fff215ad xwayland: Fix crash when run with no input device
Starting an xterm with no input device led to a crash
because weston_wm_pick_seat() was returning garbage and
weston_wm_selection_init() was trying to use the garbage.

Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2016-11-16 16:44:20 +00:00
Jussi Kukkonen
649bbce607 include stdint.h for int32_t/uint32_t
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
2016-07-26 16:26:08 -07:00
Eric Engestrom
f951f829de xwayland: fix spelling mistake
Signed-off-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2016-04-05 16:00:18 -07:00
Derek Foreman
4e18448286 xwm: Don't clear the selection if it has no text type available
weston maintains a copy of the most recently selected "thing" - it picks
the first available type when it copies, and saves that one only.

When an application quits weston will make the saved selection active.

When xwm sees the selection set it will check if any of the offered types
are text.  If no text type is offered it will clear the selection.

weston then interprets this in the same way as an application exiting and
causing the selection to be unset, and we get caught in a live lock with
both weston and xwayland consuming as much cpu as they can.

The simple fix is to just remove the test for text presence.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Carlos Garnacho <carlosg@gnome.org>
2016-02-04 16:10:36 -08:00
Carlos Garnacho
beb7a9f92d xwayland: zalloc the x11_data_sources
The wrapped weston_data_source struct has new fields which were left
uninitialized, so its access is unreliable.

The data source in xwayland/dnd.c should be eventually setting the
drag-and-drop actions, but it is a lot more incomplete than that
(read: completely), so falls out of the scope of this patch.

Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
2016-02-01 13:22:33 -08:00
Emmanuel Gil Peyrot
8c7287f5ba Partially revert "xwayland: Always free reply from xcb_get_property_reply()"
This reverts commit d3553c721c.

weston_wm_write_property() takes the ownership of the reply it gets as
a parameter, and will eventually free it later in writable_callback.

This change introduced a double-free when Xwayland programs triggered a
copy to the clipboard, leading to a Weston crash.

Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-07-15 13:55:58 -07:00
Bryce Harrington
da41b5739d xwayland: Allow dump_property when selection fails
dump_property allows reply to be NULL.  Calling it unconditionally will
ensure user knows where the selection failed.

Also refactor code a bit.

Suggested by Marek Chalupa
2015-07-10 18:13:48 -07:00
Bryce Harrington
b2d79d504e xwayland: Check return of xcb_get_property_reply() before deref
The man pages indicate this routine can return NULL on certain error
conditions.

Suggested by Marek Chalupa

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
2015-07-10 18:08:26 -07:00
Bryce Harrington
d3553c721c xwayland: Always free reply from xcb_get_property_reply()
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
2015-07-10 01:09:33 -07:00
Jon Cruz
35b2eaa989 Moved helper macro to a discrete include file.
To help reduce code duplication and also 'kitchen-sink' includes
the ARRAY_LENGTH macro was moved to a stand-alone file and
referenced from the sources consuming it. Other macros will be
added in subsequent passes.

Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-06-15 17:11:45 -07:00
Bryce Harrington
0a007dd21a xwayland: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-15 13:04:19 -07:00
Giulio Camuffo
9e1aeb86c2 xwm: fix use after free
Calling wl_event_source_remove() will free the event source later, so
reset the pointer to avoid calling it two times on the same pointer.
Fix a compositor crash when copying some text from weston terminal,
pasting it in the same terminal and hitting ctrl-u, while a X client
is running.
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-01-29 17:09:29 -08:00
Kristian Høgsberg
2ba10df300 Move xwayland up one directory level 2013-12-04 10:20:02 -08:00