On Sun, May 5, 2013 at 9:04 AM, Andrew Petersen <[email protected]> wrote:
> If I do in REPL:
>
> ````
>> f = Function('a', 'b', 'c', 'd', 'e', "console.log('what what')")
> [Function]
>> f.toString()
> 'function anonymous(a,b,c,d,e\n/**/) {\nconsole.log(\'what what\')\n}'
> ````
>
> Notice how the function arguments have an extra /**/ in them? Not sure where
> this is coming from, but it broke a few (admittedly fragile) tests of mine.
> Is this change going to stick for sure in 0.11, or only temporary? Is there
> anymore info as to why this is happening?
>
> This happens in the REPL or in plain code, and does not occur in 0.6, 0.8,
> or 0.10.

It's because of [1] and [2].  It's hardening against arbitrary code
execution from inside the Function constructor:

  $ v0.10/node -e 'Function("", "});console.log(\"OWNED\");(function(){")'
  OWNED

  $ master/node -e 'Function("", "});console.log(\"OWNED\");(function(){")'
  undefined:4
  })
   ^
  SyntaxError: Parse error
      at Function (<anonymous>)


I'm not sure if the change in the toString() output should be
considered a regression; I believe the spec only mandates that the
result can be evaluated with eval().  Please open a V8 issue if you
feel strongly about it. :-)

[1] https://code.google.com/p/v8/issues/detail?id=2470
[2] https://github.com/v8/v8/blob/762ba9c/src/v8natives.js#L1707-1713

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to