I don't know if Scribble needs OpenSSL, but a dependency probably does. The only precondition of that error is that openssl/mzssl appears *somewhere* among the dependencies. I run into that same error for evaluators that have nothing to do with Scribble.
~slg ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On Monday, January 4, 2021 7:10 PM, 'William J. Bowman' via Racket Users <[email protected]> wrote: > Thanks for the explanation. > > I can't figure out why scribble/manual needs openssl, but oh well. > > After reading through openssl, I've gone with a slightly less blunt > instrument: > > > (require/expose openssl/mzssl (X509_get_default_cert_file)) > > ... > > [sandbox-path-permissions (append `((exists > > ,(X509_get_default_cert_file))) > > (sandbox-path-permissions))] > > ... > > -- > > William J. Bowman > > On Tue, Jan 05, 2021 at 12:07:12AM +0000, Sage Gerard wrote: > > > Heads up: My earlier example was missing a closing paren. Also just saw > > that your subject line asked "Why", so I checked. > > openssl/mzssl provides a parameter called `ssl-default-verify-sources'. See > > 1. The parameter is created during module instantiation with a OS-dependent > > default value. > > When you create a sandboxed evaluator, it is impacted by several > > parameters. The default values of those parameters have little to no trust > > in the code, and will deny ALL filesystem access. Also, all Racket modules > > that are not shared with the evaluator are instantiated again. So you need > > to account for what happens as a side effect of all instantiations needed > > to get the evaluator up and running. If some module somewhere happens to > > require openssl/mzssl (even if you don't need it), then you are impacted by > > the permissions on the evaluator. > > My earlier example was crude precisely because it is a blanket grant of > > existential checks for all filesystem paths. For better security habits, > > you can just add one `exists' permission to`(sandbox-path-permissions)' > > based on the value of `(ssl-default-verify-sources)'. > > ~slg > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ > > On Monday, January 4, 2021 6:53 PM, Sage Gerard [email protected] wrote: > > > > > If you just want to silence the error with a blunt instrument, then you > > > could > > > try a parameterization where sandbox-path-permissions is set to: > > > (append (map (λ (p) `(exists ,p)) (filesystem-root-list) > > > (sandbox-path-permissions))) > > > This suffices since it is an existential check, not a file read. > > > ~slg > > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ > > > On Monday, January 4, 2021 6:47 PM, 'William J. Bowman' via Racket Users > > > [email protected] wrote: > > > > > > > I have a sandbox that loads scribble/manual (indirectly) to render some > > > > HTML. > > > > But it crashes with the following error: > > > > > > > > > racket -e "(require racket/sandbox)" -e "((make-evaluator > > > > > 'racket/base) '(require scribble/manual))" > > > > > > > > file-exists?: `exists' access denied for /etc/ssl/cert.pem > > > > errortrace...: > > > > context...: > > > > do-error > > > > security-guard-check-file > > > > ->host > > > > file-exists? > > > > ..../racket/racket/collects/openssl/mzssl.rkt:397:0: x509-root-sources > > > > interpret > > > > [repeats 1 more time] > > > > proc > > > > call-in-empty-metacontinuation-frame > > > > body of "..../racket/racket/collects/openssl/mzssl.rkt" > > > > interpret-expr > > > > body of top-level > > > > run-module-instance! > > > > [repeats 12 more times] > > > > perform-require! > > > > loop > > > > This is strange, since openssl shouldn't actually be needed. > > > > I could just allow access to the file, but the path depends on which > > > > operating system I'm running on making this slightly complicated, and > > > > the access isn't necessary. > > > > Is there some way to trick Racket into not trying to do this, or else > > > > some parameter I can use to provide access to whatever openssl is going > > > > to try to touch without hardcoding the paths? > > > > William J. Bowman > > > > You received this message because you are subscribed to the Google > > > > Groups "Racket Users" group. > > > > To unsubscribe from this group and stop receiving emails from it, send > > > > an email to [email protected]. > > > > To view this discussion on the web visit > > > > https://groups.google.com/d/msgid/racket-users/X/OpEPyvzOyzQql2%40williamjbowman.com. > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Racket Users" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > To view this discussion on the web visit > > https://groups.google.com/d/msgid/racket-users/qQRDoCYwXeJy2_f_PXvZkjoBUmmKChpSJzN6XCGWFz11VsXOuhzFEArD2-2FuR4Mui8gx3MAX2v5aX_bF21izapOF9peJ7Y3P0eg3Vei3yM%3D%40sagegerard.com. > > -- > > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/X/OuXgfbHhAeNQn8%40williamjbowman.com. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/df1qbsAjG0UlPL65pBoSA8ghltP0LiU6uLP1TRjUJPHWYhrfIGeaSTVgG0DQgPtg1aUNG5JJ7zXwlQS7-pDWdj3IHdz2aalKN9uTi1_i-jE%3D%40sagegerard.com.

