Commit graph

44 commits

Author SHA1 Message Date
Kirill Primak
e16b0068a7 xcursor: fix NULL deref on malloc() fail 2023-11-19 15:33:39 +03:00
Simon Ser
dbedcdb418 xcursor: add fallbacks for legacy names
Some XCursor themes still use the legacy names instead of the newer
cursor naming spec [1]. Fall back to the legacy name if the standard
one could not be found.

[1]: https://www.freedesktop.org/wiki/Specifications/cursor-spec/

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3746
2023-11-01 13:13:22 +00:00
Alexander Orzechowski
1b0694b794 treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00
Edgars Cīrulis
17ad034480 xcursor: Resolve warning in xcursor_build_theme_dir
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-04-25 10:16:59 +00:00
Simon Ser
25d9055281 xcursor: sync with libwayland
xcursor.c was copied over from libwayland-cursor. A lot of
cosmetic imporvements have been merged upstream. Copy-paste the
new version.
2023-04-18 14:54:25 +00:00
Simon Ser
9affcaa93c xcursor: adjust style, use calloc()
Adjust the code style for wlroots, and use calloc() for structs.
2023-04-11 20:05:27 +02:00
Simon Ser
311381c6b5 xcursor: use internal_config
Removes a project argument, improves escaping.
2022-12-06 22:39:45 +00:00
illiliti
1266f7424f meson: replace join_paths() with / operator 2022-09-14 10:02:56 +02:00
Antonin Décimo
95d3529edf xcursor: check that XDG base directory path is absolute
The spec reads:

> All paths set in these environment variables must be absolute. If an
> implementation encounters a relative path in any of these variables it should
> consider the path invalid and ignore it.

and

> If $XDG_DATA_HOME is either not set or empty, a default equal to
> $HOME/.local/share should be used.

Testing that the path is absolute also entails that is is non-empty.
2022-05-02 15:15:24 +02:00
Moon Sungjoon
2dd121235e xcursor: support XDG Base Directory Specification
This patch adds ~/.local/share/icons to the search path, so user-specific
themes can be loaded through the API provided by libwayland-cursor.

Use this PR as reference:
https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/112
2022-03-08 15:41:42 +00:00
Vlad Zahorodnii
ab3b9f9a77 xcursor: garbage collect XcursorLibraryLoadImages
XcursorLibraryLoadImages is unused, let's drop it.

Same as [1].

[1]: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/206

Co-authored-by: Simon Ser <contact@emersion.fr>
2022-01-31 14:10:08 +00:00
Tobias Stoeckmann
d0c1f0c0b6 xcursor: fix CVE-2013-2003
The libXcursor fix for CVE-2013-2003 has never been imported into
wlroots, leaving it vulnerable to it.

Changing the argument type to an unsigned type is an effective merge of
Ilja Van Sprundel's commit in libXcursor.

Proof of Concept (compile with address sanitizer):

$ mkdir -p ~/.local/share/icons/poc/cursors
$ base64 -d <<< WGN1chAAAAAAAAAA/////w== > \
    ~/.local/share/icons/poc/cursors/poc
$ echo "seat seat0 xcursor_theme poc 10" > ~/poc-config
$ sway -c ~/poc-config
2021-05-02 17:04:59 +02:00
Simon Ser
1a5530d14d xcursor: quiet debug log
Stop listing all available cursors each time a cursor theme is
loaded. They can be obtained from the CLI instead, e.g.

    ls /usr/share/icons/Adwaita/cursors
2021-04-26 20:11:05 +02:00
Yuya Nishihara
3c5cc02b18 xcursor: use memcpy() to append string of known size
Since len <= strlen(elt) is known, we don't need a str*() function. Let's
simply do memcpy() to suppress linter false positive.

Fixes #2777.
2021-04-13 16:55:46 +02:00
Yuya Nishihara
a71d565138 Revert "xcursor: use strncat instead of strncpy"
This reverts commit 7dffe9339b, which introduced
another linter error with -O3:

  error: ‘strncat’ specified bound 7 equals source length [-Werror=stringop-overflow=]

This makes sense because strncat(dest, "cursors", strlen("cursors")) is moot
in security point of view.

The next commit will replace strncpy() with memcpy(), so let's restore the
original implementation.
2021-04-13 16:55:46 +02:00
Lukas Märdian
7dffe9339b xcursor: use strncat instead of strncpy
strncat appends '\0' automatically and avoids the stringop-truncation
warning/error
2021-03-08 12:03:48 +01:00
Lukas Märdian
d8a422575b Fix false positive -Wstringop-truncation
Fix false positive stringop-truncation warning/error with GCC 10 on s390x by indicating GCC to explicitly ignore this case, as it is clearly a false positive (NUL is set in the following line).

This allow the compilation to succeed with -Werror on.

Fixes: https://github.com/swaywm/wlroots/issues/2018
2021-03-08 12:03:48 +01:00
Manuel Stoeckl
b6dea80907 xcursor: make cursor data and metadata const 2021-02-05 10:04:20 +01:00
Valentin
65abd4e92a Fix undefined behavior
Without the casts the bytes accesses get converted to int. but int is
not guaranteed to be 4 bytes large. Even when it is 4 bytes large
`bytes[3] << 24` does not fit because int is signed.
2020-09-01 11:58:56 +02:00
Antonin Décimo
d9bb792794 Fix incorrect format parameters 2020-07-27 10:49:19 +02:00
Kirill Chibisov
6c8f66ff59 xcursor: add xorg-x11 and cursors path to XCURSORPATH
This should match default XCURSORPATH, which is used by libwayland-cursor
and other xcursor loading libraries more closely.
2020-06-26 11:20:52 +02:00
Jan Beich
8d2e8d8a06 xcursor: also look for cursor themes under ${datadir}/icons by default
Same as https://gitlab.freedesktop.org/wayland/wayland/commit/dd8891be36ec
2020-03-04 10:02:31 +01:00
Scott Anderson
cff1c2f740 meson: Various improvements
Bumps minimum version to 0.51.0

- Remove all intermediate static libraries.
  They serve no purpose and are just add a bunch of boilerplate for
  managing dependencies and options. It's now managed as a list of
  files which are compiled into libwlroots directly.

- Use install_subdir instead of installing headers individually.
  I've changed my mind since I did that. Listing them out is annoying as
  hell, and it's easy to forget to do it.

- Add not_found_message for all of our optional dependencies that have a
  meson option. It gives some hints about what option to pass and what
  the optional dependency is for.

- Move all backend subdirectories into their own meson.build. This
keeps some of the backend-specific build logic (especially rdp and
session) more neatly separated off.

- Don't overlink example clients with code they're not using.
  This was done by merging the protocol dictionaries and setting some
  variables containing the code and client header file.
  Example clients now explicitly mention what extension protocols they
  want to link to.

- Split compositor example logic from client example logic.

- Minor formatting changes
2019-12-23 07:48:29 -05:00
Antonin Décimo
820800a5ab xcursor: avoid leak and loss of all cursors if cursors realloc fails 2019-08-12 09:37:21 +09:00
Cosimo Cecchi
14f45c056f
xcursor: Support XDG user data dir location
Nowadays ~/.icons is not used anymore as the preferred location for custom
user icon themes; XDG_DATA_HOME/icons (aka ~/.local/share/icons) is what
toolkits like GTK prefer. Prepend that location to the default xcursor path, so
that cursor themes installed there can be used by apps and toolkits that use
libXcursor.

Port of https://cgit.freedesktop.org/xorg/lib/libXcursor/commit/src?id=2263c196cb0dcb8547b378df7b35f83b8b99c01e
2018-11-27 23:21:07 +01:00
Philipp Ludwig
e7fba556a8
xcursor: fix crash when encountering cursor themes with circular dependencies
Port of https://cgit.freedesktop.org/xorg/lib/libXcursor/commit/src?id=f64a8cc1a65dcad4294e2988b402a34175019663
2018-11-27 23:19:26 +01:00
Tobias Stoeckmann
de0a032d8e
xcursor: Fix heap overflows when parsing malicious files
It is possible to trigger heap overflows due to an integer overflow
while parsing images.

The integer overflow occurs because the chosen limit 0x10000 for
dimensions is too large for 32 bit systems, because each pixel takes
4 bytes. Properly chosen values allow an overflow which in turn will
lead to less allocated memory than needed for subsequent reads.

See also:
https://cgit.freedesktop.org/xorg/lib/libXcursor/commit/?id=4794b5dd34688158fb51a2943032569d3780c4b8
5d201df72f
2018-11-06 14:40:41 +01:00
emersion
2d0c5ec78e
Use _POSIX_C_SOURCE, use shm_open 2018-11-06 08:29:23 +01:00
emersion
7cbef15206
util: add wlr_ prefix to log symbols 2018-07-09 22:49:54 +01:00
emersion
625a7a48dc
Don't use the wlr_ prefix for static functions 2018-04-25 23:51:00 +01:00
Drew DeVault
1d9be89e2d
Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
Scott Anderson
86269052eb Explicitly export EFL symbols 2018-02-19 14:26:40 +13:00
emersion
c2e1474010
Reformat all #include directives 2018-02-12 21:29:23 +01:00
emersion
bde255933e
output: add wlr_output::damage, fixes #572 2018-01-18 19:47:21 +01:00
Tony Crisci
4c60072be5 move get_resize_name to xcursor 2017-12-08 06:08:06 -05:00
Greg V
a5fe9aa736 Add FreeBSD compatibility 2017-10-11 00:07:21 +03:00
Tony Crisci
368f74e4df Refactor meson build files
Use tabs for indentation and break up function calls over 80 col.
2017-08-30 14:30:47 -04:00
Tony Crisci
f334dcaf40 rename wlr_cursor.c to wlr_xcursor.c 2017-08-18 19:52:55 -04:00
Tony Crisci
f03be94309 rename wlr_cursor to wlr_xcursor
This is for the implementation of another type that should be called wlr_cursor.
2017-08-18 19:48:55 -04:00
nyorain
f998bb8299 Fix style issues 2017-08-14 17:09:56 +02:00
Drew DeVault
d4b4bfb8bc Fix #64 2017-08-13 08:26:32 -04:00
Drew DeVault
62d8b252c0 Refactor meson and move xdg-shell into wlroots 2017-08-11 09:37:09 -04:00
Drew DeVault
622a0d838b Add logging in wlr_cursor 2017-08-08 11:56:52 -04:00
Drew DeVault
7486263f7e Add xcursor sublibrary 2017-08-07 21:13:04 -04:00