Saturday, September 30, 2023

Re: sysutils/rofi sometimes coredumps in __vfprintf (+ similar crash in fvwm3)

My patch was incomplete -- str was still accessed later, after the
debug printf, so a better fix was due.

Mikhail sent my diff upstream[0], where was improved and committed[1]
a couple of hours ago. Here's an adaptation for the version we have
currently in tree.

[0]: https://github.com/davatorium/rofi/pull/1902
[1]: https://github.com/davatorium/rofi/commit/a6d297591ef4d389a3d0043afb887b0bdb48a317

(sneaking in a plist update too while here)

ok?

Index: Makefile
===================================================================
RCS file: /home/cvs/ports/sysutils/rofi/Makefile,v
retrieving revision 1.41
diff -u -p -r1.41 Makefile
--- Makefile 27 Sep 2023 17:16:33 -0000 1.41
+++ Makefile 30 Sep 2023 08:53:55 -0000
@@ -2,7 +2,7 @@ COMMENT = window switcher, run dialog a

V = 1.7.5
DISTNAME = rofi-${V}
-REVISION = 0
+REVISION = 1

CATEGORIES = sysutils x11
HOMEPAGE = https://github.com/davatorium/rofi
@@ -35,6 +35,8 @@ CONFIGURE_STYLE = gnu
CONFIGURE_ARGS = --disable-check
CONFIGURE_ENV = CPPFLAGS="-I${LOCALBASE}/include -I${X11BASE}/include" \
YACC="bison -y"
+
+DEBUG_PACKAGES = ${BUILD_PACKAGES}

pre-configure:
sed -i 's,/usr/bin/env bash,/bin/sh,' ${WRKSRC}/script/get_git_rev.sh
Index: patches/patch-source_xcb_c
===================================================================
RCS file: patches/patch-source_xcb_c
diff -N patches/patch-source_xcb_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-source_xcb_c 30 Sep 2023 15:06:23 -0000
@@ -0,0 +1,25 @@
+adaptation of https://github.com/davatorium/rofi/commit/a6d297591e
+
+Index: source/xcb.c
+--- source/xcb.c.orig
++++ source/xcb.c
+@@ -1475,13 +1475,16 @@ static void x11_helper_discover_window_manager(void) {
+ xcb_ewmh_get_wm_name_unchecked(&(xcb->ewmh), wm_win);
+ if (xcb_ewmh_get_wm_name_reply(&(xcb->ewmh), cookie, &wtitle, (void *)0)) {
+ if (wtitle.strings_len > 0) {
+- g_debug("Found window manager: |%s|", wtitle.strings);
+- if (g_strcmp0(wtitle.strings, "i3") == 0) {
++ // Copy the string and add terminating '\0'.
++ char *str = g_strndup(wtitle.strings, wtitle.strings_len);
++ g_debug("Found window manager: |%s|", str);
++ if (g_strcmp0(str, "i3") == 0) {
+ current_window_manager =
+ WM_DO_NOT_CHANGE_CURRENT_DESKTOP | WM_PANGO_WORKSPACE_NAMES;
+- } else if (g_strcmp0(wtitle.strings, "bspwm") == 0) {
++ } else if (g_strcmp0(str, "bspwm") == 0) {
+ current_window_manager = WM_ROOT_WINDOW_OFFSET;
+ }
++ g_free(str);
+ }
+ xcb_ewmh_get_utf8_strings_reply_wipe(&wtitle);
+ }
Index: pkg/PLIST
===================================================================
RCS file: /home/cvs/ports/sysutils/rofi/pkg/PLIST,v
retrieving revision 1.15
diff -u -p -r1.15 PLIST
--- pkg/PLIST 21 Aug 2022 18:55:20 -0000 1.15
+++ pkg/PLIST 30 Sep 2023 15:11:41 -0000
@@ -16,7 +16,6 @@ lib/pkgconfig/rofi.pc
@man man/man5/rofi-keys.5
@man man/man5/rofi-script.5
@man man/man5/rofi-theme.5
-share/applications/
share/applications/rofi-theme-selector.desktop
share/applications/rofi.desktop
share/examples/rofi/
@@ -24,8 +23,6 @@ share/examples/rofi/i3_empty_workspace.s
share/examples/rofi/i3_switch_workspaces.sh
share/examples/rofi/rofi-file-browser.sh
share/examples/rofi/test_script_mode.sh
-share/icons/
-share/icons/hicolor/
share/icons/hicolor/apps/
share/icons/hicolor/apps/rofi.svg
share/rofi/

No comments:

Post a Comment