Hello all, Every once in a while someone asks about secure sandboxing with Guile, and generally the response is that it should be fairly easy, by creating a module with carefully selected bindings, but there's nothing ready "out of the box".
I just realized that psyntax has a security hole that prevents secure sandboxing, and wanted to post this fact before it was forgotten. The problem is that psyntax accepts syntax-objects in the input, and syntax-objects are simply vectors (or sexps containing vectors). Therefore, it is always possible to _forge_ syntax-objects that refer to arbitrary bindings in arbitrary modules, even if the usual bindings of '@' and '@@' are not available. In particular (although this is an internal implementation detail that you cannot rely upon!) in Guile 2.0 the following two expressions are treated equivalently: (@@ (ice-9 popen) open-pipe*) #(syntax-object open-pipe* ((top)) (hygiene ice-9 popen)) I don't think we can plug this hole until 2.2. Mark