On Sun, Dec 20, 2015 at 06:59:56PM +0100, Ralf Horstmann wrote:
> gdb shows this:
>     #0  0x00000ae4d48740ca in shmget () at <stdin>:2
[...]
>     #8  0x00000ae20f9077e4 in init_xcb_late (fontname=Variable "fontname" is 
> not available.

Whoops, I missed that one.  Thanks for the backtrace.  This means that
we can't pledge i3bar since init_xcb_late can be called at any point
during the runtime to update the configuration (including fonts).

Updated diff below.

Index: Makefile
===================================================================
RCS file: /var/cvs/ports/x11/i3/Makefile,v
retrieving revision 1.99
diff -u -p -r1.99 Makefile
--- Makefile    18 Dec 2015 15:53:08 -0000      1.99
+++ Makefile    20 Dec 2015 14:06:08 -0000
@@ -3,7 +3,7 @@
 COMMENT =      improved dynamic tiling window manager
 
 DISTNAME =     i3-4.11
-REVISION =     0
+REVISION =     1
 CATEGORIES =   x11
 
 EXTRACT_SUFX = .tar.bz2
Index: patches/patch-i3-msg_main_c
===================================================================
RCS file: patches/patch-i3-msg_main_c
diff -N patches/patch-i3-msg_main_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-i3-msg_main_c 20 Dec 2015 13:52:48 -0000
@@ -0,0 +1,18 @@
+$OpenBSD$
+
+pledge for i3-msg:
+rpath and unix needed for talking to the i3 socket in /tmp
+
+--- i3-msg/main.c.orig Wed Sep 30 08:55:10 2015
++++ i3-msg/main.c      Sun Dec 20 14:42:51 2015
+@@ -119,6 +119,10 @@ static yajl_callbacks reply_callbacks = {
+ };
+ 
+ int main(int argc, char *argv[]) {
++#if defined(__OpenBSD__)
++    if (pledge("stdio rpath unix", NULL) == -1)
++        err(EXIT_FAILURE, "pledge");
++#endif
+     char *env_socket_path = getenv("I3SOCK");
+     if (env_socket_path)
+         socket_path = sstrdup(env_socket_path);
Index: patches/patch-i3-nagbar_main_c
===================================================================
RCS file: /var/cvs/ports/x11/i3/patches/patch-i3-nagbar_main_c,v
retrieving revision 1.7
diff -u -p -r1.7 patch-i3-nagbar_main_c
--- patches/patch-i3-nagbar_main_c      4 Oct 2015 08:48:12 -0000       1.7
+++ patches/patch-i3-nagbar_main_c      20 Dec 2015 14:05:53 -0000
@@ -1,6 +1,14 @@
 $OpenBSD: patch-i3-nagbar_main_c,v 1.7 2015/10/04 08:48:12 dcoppa Exp $
+
+surprisingly wide pledge for this program
+
+"wpath cpath" for writing a script
+"rpath getpw" for checking access permissions
+"proc exec" for executing the script
+"unix" for talking to the i3 socket
+
 --- i3-nagbar/main.c.orig      Wed Sep 30 08:55:10 2015
-+++ i3-nagbar/main.c   Fri Oct  2 16:58:54 2015
++++ i3-nagbar/main.c   Sun Dec 20 15:00:22 2015
 @@ -170,7 +170,7 @@ static void handle_button_release(xcb_connection_t *co
      }
  
@@ -9,4 +17,16 @@ $OpenBSD: patch-i3-nagbar_main_c,v 1.7 2
 +    sasprintf(&terminal_cmd, "${X11BASE}/bin/xterm -e %s", link_path);
      printf("argv0 = %s\n", argv0);
      printf("terminal_cmd = %s\n", terminal_cmd);
+ 
+@@ -464,6 +464,11 @@ int main(int argc, char *argv[]) {
+ 
+     font = load_font(pattern, true);
+     set_font(&font);
++
++#if defined(__OpenBSD__)
++    if (pledge("stdio rpath wpath cpath getpw proc exec unix", NULL) == -1)
++        err(EXIT_FAILURE, "pledge");
++#endif
+ 
+     xcb_rectangle_t win_pos = get_window_position();
  
Index: patches/patch-src_main_c
===================================================================
RCS file: /var/cvs/ports/x11/i3/patches/patch-src_main_c,v
retrieving revision 1.14
diff -u -p -r1.14 patch-src_main_c
--- patches/patch-src_main_c    18 Dec 2015 15:53:09 -0000      1.14
+++ patches/patch-src_main_c    20 Dec 2015 18:25:02 -0000
@@ -2,8 +2,14 @@ $OpenBSD: patch-src_main_c,v 1.14 2015/1
 
 Bugfix: add keymap fall back (_XKB_RULES_NAMES, then defaults)
 
+add pledge:
+
+"stdio rpath unix" for talking to the i3 socket in /tmp
+"wpath cpath" are needed for the restart-in-place functionality
+"proc exec" for executing programs
+
 --- src/main.c.orig    Wed Sep 30 08:55:10 2015
-+++ src/main.c Fri Dec 18 13:58:58 2015
++++ src/main.c Sun Dec 20 14:58:54 2015
 @@ -87,6 +87,7 @@ struct ws_assignments_head ws_assignments = TAILQ_HEAD
  
  /* We hope that those are supported and set them to true */
@@ -20,3 +26,17 @@ Bugfix: add keymap fall back (_XKB_RULES
      if (!extreply->present) {
          DLOG("xkb is not present on this server\n");
      } else {
+@@ -784,6 +786,13 @@ int main(int argc, char *argv[]) {
+         xcb_free_gc(conn, gc);
+         xcb_free_pixmap(conn, pixmap);
+     }
++
++#if defined(__OpenBSD__)
++    /* can't pledge if shm_* calls are used */
++    if (shmlog_size == 0)
++        if (pledge("stdio rpath wpath cpath proc exec unix", NULL) == -1)
++            err(EXIT_FAILURE, "pledge");
++#endif
+ 
+     struct sigaction action;
+ 

Reply via email to