Thanks guys, I got lot of ideas already. I will try to implements that restricted mode.<br>I already implemented something that will help me to counter any infinite loops: <a href="http://img4.hostingpics.net/pics/726857capture1352736469.png">http://img4.hostingpics.net/pics/726857capture1352736469.png</a><br>
which can pose a problem as well.<br><div class="gmail_extra"><br><br><div class="gmail_quote">2012/11/12 Juan Jose Garcia-Ripoll <span dir="ltr"><<a href="mailto:juanjose.garciaripoll@gmail.com" target="_blank">juanjose.garciaripoll@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra">Trying to precise an answer from a private email<br><br><div class="gmail_quote"><div class="im">
On Mon, Nov 12, 2012 at 12:47 AM, Peter Enerccio <span dir="ltr"><<a href="mailto:enerccio@gmail.com" target="_blank">enerccio@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">it should not be possible to break into another object's code</blockquote><div><br></div></div><div>This is only possible through the MP package, which allows interrupting other processes. If this package is not available for your code, this is solved</div>
<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> or environment from other objects</blockquote></div></div><br>The "environment" in Common Lisp is made of</div>
<div class="gmail_extra">1* global variable bindings</div><div class="gmail_extra">2* special variable re-bindings (as in (let ((*my-special-var* foo)) ...)</div><div class="gmail_extra">3* local variable bindings</div><div class="gmail_extra">
4* object slots<br clear="all"><div><br></div><div>You can either enforce that 1* is impossible in your code (global variables should be avoided if possible), or override all global bindings in code that runs using 2* as in (progv list-of-special-variables list-of-initial-assignments (eval user-code-to-be-evaluated)). 3* is not accessible from one running code to the other. 4* is accessible only if you provide other code with explicit references to those objects.</div>
<div><br></div><div>Since there are no pointers in Common Lisp and your DSL does not have neither "eval" nor arbitrary symbols, there is no easy way you can overcome this simple-minded security scheme. But once again, this is not something ECL specific and you might get more information either in c.l.l, in the "pro" common lisp mailing list or in the #irc channel.</div>
<div class="im">
<div><br></div><div>Juanjo</div><div><br></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>
</div></div>
</blockquote></div><br><br clear="all"><br>-- <br>Bc. Peter Vaňušanik<br><a href="http://www.bishojo.tk" target="_blank">http://www.bishojo.tk</a><br><br>
</div>