Ah! I didn’t know about the module browser, thanks! And I guess this chain 
makes sense.

-- 
Sent from my phoneamajig

> On Jan 4, 2021, at 16:27, Robby Findler <[email protected]> wrote:
> 
> 
> If you open a file that requires scribble/manual with the module browser 
> (available via the Racket menu item in DrRacket), you'll see that ssl is 
> needed by the code that opens urls (presumably to do https) which is needed 
> by the code that handles planet requires (since planet requires may involve 
> http requests) which is needed by the code that handles tags (presumably 
> these tags go via require paths, maybe?) in scribble. At least, I think I 
> might be getting that right.
> 
> Robby
> 
> 
>> On Mon, Jan 4, 2021 at 6:15 PM Sage Gerard <[email protected]> wrote:
>> 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.

-- 
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/1841DEDF-998C-419B-B6F3-C8968590BF20%40williamjbowman.com.

Reply via email to