diff --git a/Bugs.md b/Bugs.md index 6080e81..f81d2fc 100644 --- a/Bugs.md +++ b/Bugs.md @@ -258,3 +258,10 @@ adequately. Cagebreak up to and including release 1.4.2 does not handle damaging adequately, when scanning out views. +### Issue 21 + + * github issue number: N/A + * Fixed: 1.4.4 + +Cagebreak up to and including release 1.4.3 sometimes had null pointer +dereferences on view destroy. diff --git a/README.md b/README.md index 7a5b484..e5e0d99 100644 --- a/README.md +++ b/README.md @@ -180,6 +180,11 @@ ninja -C build For every release after 1.0.5, hashes will be provided. +1.4.4 + + * sha 256: c6e08e19feb17f768e136cf02f5692ef121ff289763dc60ef8678103803d3307 + * sha 512: aebf27fa9c24f93dfd0b7c96536c253e2ea603d6746c40e8de2163e06367bc57ac4e22d6c07dd1e0963cce5b18b460d373e15b5c12a5a42ae6b70787971960c9 + 1.4.3 * sha 256: 5e29cbaf7c0c5ca74f71a5605bb3d6e302e051798401fee9a79419720b8d8e95 diff --git a/fuzz/fuzz-lib.c b/fuzz/fuzz-lib.c index e99a21f..a32e062 100644 --- a/fuzz/fuzz-lib.c +++ b/fuzz/fuzz-lib.c @@ -59,6 +59,14 @@ #include "fuzz-lib.h" +struct cg_server server; +struct wlr_xdg_shell *xdg_shell; + +struct wlr_xwayland *xwayland; +#if CG_HAS_XWAYLAND +struct wlr_xcursor_manager *xcursor_manager; +#endif + static bool drop_permissions(void) { if(getuid() != geteuid() || getgid() != getegid()) { diff --git a/fuzz/fuzz-lib.h b/fuzz/fuzz-lib.h index 0ea499b..7182a50 100644 --- a/fuzz/fuzz-lib.h +++ b/fuzz/fuzz-lib.h @@ -17,12 +17,12 @@ #define WAIT_ANY -1 #endif -struct cg_server server; -struct wlr_xdg_shell *xdg_shell; +extern struct cg_server server; +extern struct wlr_xdg_shell *xdg_shell; -struct wlr_xwayland *xwayland; +extern struct wlr_xwayland *xwayland; #if CG_HAS_XWAYLAND -struct wlr_xcursor_manager *xcursor_manager; +extern struct wlr_xcursor_manager *xcursor_manager; #endif void diff --git a/man/cagebreak-config.5.md b/man/cagebreak-config.5.md index b6fbdbc..197c91a 100644 --- a/man/cagebreak-config.5.md +++ b/man/cagebreak-config.5.md @@ -1,4 +1,4 @@ -% CAGEBREAK-CONFIG(1) Version 1.4.3 | Cagebreak Manual +% CAGEBREAK-CONFIG(1) Version 1.4.4 | Cagebreak Manual # NAME diff --git a/man/cagebreak.1.md b/man/cagebreak.1.md index f00fe65..3640ee3 100644 --- a/man/cagebreak.1.md +++ b/man/cagebreak.1.md @@ -1,4 +1,4 @@ -% CAGEBREAK(1) Version 1.4.3 | Cagebreak Manual +% CAGEBREAK(1) Version 1.4.4 | Cagebreak Manual # NAME diff --git a/meson.build b/meson.build index ea77b3a..64bbe40 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('cagebreak', 'c', - version: '1.4.3', + version: '1.4.4', license: 'MIT', default_options: [ 'c_std=c11', @@ -53,7 +53,7 @@ if is_freebsd ) endif -wlroots = dependency('wlroots', version: '>= 0.11.0') +wlroots = dependency('wlroots', version: '>= 0.12.0') wayland_protos = dependency('wayland-protocols', version: '>=1.14') wayland_server = dependency('wayland-server') wayland_cursor = dependency('wayland-cursor') @@ -195,13 +195,13 @@ reproducible_build_versions = { 'wayland_server': '1.18.0', 'wayland_client': '1.18.0', 'wayland_cursor': '1.18.0', - 'wlroots': '0.11.0', + 'wlroots': '0.12.0', 'xkbcommon': '1.0.1', 'fontconfig': '2.13.91', 'pixman': '0.40.0', - 'pango': '1.46.2', + 'pango': '1.48.0', 'cairo': '1.17.3', - 'pangocairo': '1.46.2', + 'pangocairo': '1.48.0', 'math': '-1' } diff --git a/signatures/1.4.3.sig b/signatures/1.4.3.sig new file mode 100644 index 0000000..e37900a Binary files /dev/null and b/signatures/1.4.3.sig differ diff --git a/signatures/cagebreak.sig b/signatures/cagebreak.sig index e37900a..6480250 100644 Binary files a/signatures/cagebreak.sig and b/signatures/cagebreak.sig differ diff --git a/xdg_shell.c b/xdg_shell.c index 35c170c..514ce97 100644 --- a/xdg_shell.c +++ b/xdg_shell.c @@ -282,6 +282,7 @@ handle_xdg_shell_surface_unmap(struct wl_listener *listener, void *_data) { wl_container_of(listener, xdg_shell_view, unmap); struct cg_view *view = &xdg_shell_view->view; + wl_list_remove(&xdg_shell_view->new_popup.link); wl_list_remove(&xdg_shell_view->commit.link); view_unmap(view); @@ -316,7 +317,6 @@ handle_xdg_shell_surface_destroy(struct wl_listener *listener, void *_data) { wl_list_remove(&xdg_shell_view->unmap.link); wl_list_remove(&xdg_shell_view->destroy.link); wl_list_remove(&xdg_shell_view->request_fullscreen.link); - wl_list_remove(&xdg_shell_view->new_popup.link); xdg_shell_view->xdg_surface = NULL; view_destroy(view);