On Fri, Sep 08, 2023 at 08:55:10AM -0300, Lucas de Sena wrote:

[...]

> Quoting from `xenocara/app/xclock/xclock.c`:
> 
> > {
> >     /* force reading of XErrorDB into memory to avoid adding "rpath" to 
> >        pledge below */
> >     char buf[1];
> >
> >    (void)XGetErrorDatabaseText(XtDisplay(toplevel), "XProtoError", "0", "", 
> >  buf, 1);
> > }
> > if (pledge("stdio", NULL) == -1)
> >        err(1, "pledge");

In xclock.c, this happens right before XtAppMainLoop, and it looks like
we could do the exact same thing for xeyes... Is this better?

Index: xeyes.c
===================================================================
RCS file: /cvs/xenocara/app/xeyes/xeyes.c,v
retrieving revision 1.5
diff -u -p -r1.5 xeyes.c
--- xeyes.c     29 Aug 2021 17:50:32 -0000      1.5
+++ xeyes.c     12 Sep 2023 01:34:03 -0000
@@ -32,6 +32,10 @@ from the X Consortium.
 # include "config.h"
 #endif
 
+#ifdef HAVE_PLEDGE
+# include <unistd.h>
+# include <err.h>
+#endif
 #include <X11/Intrinsic.h>
 #include <X11/StringDefs.h>
 #include <X11/Shell.h>
@@ -142,6 +146,19 @@ main(int argc, char **argv)
     XtRealizeWidget (toplevel);
     (void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
                             &wm_delete_window, 1);
+
+#ifdef HAVE_PLEDGE
+    {
+       /* force reading of XErrorDB into memory to avoid adding "rpath" to
+         * pledge below */
+        char buf[1];
+
+        (void)XGetErrorDatabaseText(XtDisplay(toplevel), "XProtoError", "0", 
"", buf, 1);
+    }
+    if (pledge("stdio", NULL) == -1)
+           err(1, "pledge");
+#endif
+
     XtAppMainLoop(app_context);
 
     return 0;

Reply via email to