On Sun, 27 Oct 2019 at 17:18:03 +0100, Klemens Nanni wrote:
>       10377 thunderbird CALL  pledge(0xc5e1686e484,0)
>       10377 thunderbird STRU  promise=""
>       10377 thunderbird RET   pledge 0
>       10377 thunderbird CALL  clock_gettime(CLOCK_MONOTONIC,0x7f7fffff96d8)
>       10377 thunderbird PLDG  clock_gettime, "stdio", errno 1 Operation not 
> permitted
>       10377 thunderbird PSIG  SIGABRT SIG_DFL
>       ...
> 
> Thunderbird's WRKSRC only contains one pledge(2) call:
> 
>       dom/ipc/ContentChild.cpp
>       3948:  if (pledge(promisesString.get(), NULL) == -1) {

That's the code from Firefox that is supposed to read the pledge 
promises from the security.sandbox.pledge.main preference, but 
that's only enabled if built with MOZ_SANDBOX.  That define is only 
supposed to get set when the --enable-sandbox flag is passed to 
the configure script, as the www/mozilla-firefox port does:

    CONFIGURE_ARGS +=       --enable-sandbox

Mozilla broke that in in version 69, so even though --enable-sandbox 
was passed, sandboxing wasn't enabled on OpenBSD:

https://bugzilla.mozilla.org/show_bug.cgi?id=1579323

Apparently the way that got fixed forces it to be enabled by default 
now without --enable-sandbox being passed, and Thunderbird uses that 
same code.  So now sandboxing is enabled on Thunderbird but there 
are no pledge strings defined in the default preferences.

So I think the fix is to now pass --disable-sandbox in 
mail/mozilla-thunderbird/Makefile.

As a workaround, you can add this to 
/usr/local/lib/thunderbird/defaults/pref/all-openbsd.js:

    pref("security.sandbox.pledge.main", "junk");

That will cause pledge() to fail rather than continuing with an 
empty list of pledge promises.

Reply via email to