On Wed, May 18, 2016 at 06:50:15PM +0200, Kamil Cholewiński wrote:
> Hi folks,
> 
> This is purely OpenBSD-specific; had a brief look at SecComp and
> promptly ran away.
> 
> Included are pledge(2) diffs for dwm, dmenu, st and slock. I've been
> testing these for a week now (both stress-tests and normal usage), and I
> have no ill effects to report.

Cool!

> diff --git a/dwm.c b/dwm.c
> index ff7e096..aab76b2 100644
> --- a/dwm.c
> +++ b/dwm.c
> @@ -2132,13 +2132,28 @@ main(int argc, char *argv[])
>               die("dwm-"VERSION "\n");
>       else if (argc != 1)
>               die("usage: dwm [-v]\n");
> +#if defined(__OpenBSD__)
> +     if (pledge("stdio rpath dns unix prot_exec proc exec", NULL) < 0) {
> +             die("pledge\n");
> +     }
> +#endif
>       if (!setlocale(LC_CTYPE, "") || !XSupportsLocale())

Like Marc said you can use something like:

        die("pledge: %s\n", strerror(errno));

for a more descriptive pledge(2) error message. The standard OpenBSD pattern is:

        if (pledge("promises", NULL) == -1)
                err(1, "pledge");

but it requires err.h BSD_SOURCE.

I really like pledge(2) and am a OpenBSD user, but I don't know if we should
apply this in the upstream version (yet). Would like to hear more opinions.

Kind regards,
Hiltjo

Reply via email to