<div dir="ltr">if I do not return that function explicitly and since I own that function being the one that put a `caller` inside it where is exactly the problem ... once again?<div><br></div><div style>I would agree 100% if there was a global way to retrieve the currently invoked function but caller, is even more secure than call, apply, and bind, 'cause it cannot be overwritten in a meaningful way ( ok, it could probably deleting the descriptor and putting it back later on )</div>
<div style><br></div><div style>If I've passed that object I could also argue that object should not be modified until I decide. There's no mechanism to drop a temporarily frozen state because I've sent the object I trust to another function.</div>
<div style><br></div><div style>Moreover, if I created the function that uses .caller is because I own that function and I put it publicly accessible and maybe I want to know who's invoking it and how ... is like baking a pie asking you to let me know when you want to eat it because you know what ? maybe I can throw if the action is eat() instead of throw() when the context expiration date is expired, you know what I mean? I've created that bloody pie, who better than me can decide or suggest when and how to use it?</div>
<div style><br></div><div style>If you call unknown functions inside your code, the fact there is a caller is actually the last problem you might have, isn't it?</div><div style><br></div><div style>Also, if that is the **real** problem, you can maybe just Function('m','return m()')(method) so that caller would be null, right ?</div>
<div style><br></div><div style>But I understand there's no way caller is gonna be back, even if reasons aren't in my opinion, valid enough.</div><div style><br></div><div style>br</div><div style><br></div></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Mar 11, 2013 at 5:10 PM, Dean Landolt <span dir="ltr"><<a href="mailto:dean@deanlandolt.com" target="_blank">dean@deanlandolt.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Mon, Mar 11, 2013 at 7:57 PM, Andrea Giammarchi <span dir="ltr"><<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>On Mon, Mar 11, 2013 at 3:39 PM, Dean Landolt <span dir="ltr"><<a href="mailto:dean@deanlandolt.com" target="_blank">dean@deanlandolt.com</a>></span> wrote:<br>


</div><div class="gmail_extra"><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">it's not the same thing as apply, bind, or call -- in each of the latter forms you're explicitly handing out the `this` reference capability. There's clearly no capability leak as with caller.</div>



</blockquote><div><br></div></div><div>I wonder how would you access the `this` reference using `caller` from somewhere else, exactly, 'cause more I think about above sentence, the more I realize I really do not understand what are you talking about ... </div>



<div><br></div><div>(function test() {</div><div>  function what() {</div><div>    alert(what.caller);</div><div>  }</div><div>  what();</div><div>}()); </div><div><br></div><div>So I've got `test` there, now what about leaking `this` ... how ?</div>


</div></div></div></blockquote><div><br></div></div></div><div>The leakage is that caller is a reference -- having that reference gives you the <i>capability </i>to follow any further references on its object graph. This reference wasn't explicitly handed out (as is always the case with this-binding in call, apply and bind) -- it was just <i>leaked</i> out by the simple fact that the function was called. It's very possible the caller has all kinds of powers you didn't intend to expose to the callee -- these powers have been leaked. It's really not complex -- this is an inherent, unpluggable leak. And since OCap is now <i>the</i> security model of es, there really no sense in trying to revive caller -- it's gone for good.<br>


</div></div><br></div></div>
</blockquote></div><br></div>