tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

evalCallingName.js (728B)


      1 function a() {
      2  return "a";
      3 }
      4 function b() {
      5  return "b";
      6 }
      7 function c() {
      8  return "c";
      9 }
     10 var names = ["a","b","c"];
     11 
     12 function foo(name) {
     13  return eval(name + "()");
     14 }
     15 
     16 for (var i = 0; i < names.length; i++)
     17  assertEq(foo(names[i]), names[i]);
     18 
     19 // Test bailout due to bad name passed to eval.
     20 try {
     21  foo("missing");
     22 } catch (e) {
     23  assertEq(/missing/.test(e), true);
     24 }
     25 
     26 function bar(name) {
     27  return eval(name + "()");
     28 }
     29 
     30 for (var i = 0; i < names.length; i++)
     31  assertEq(bar(names[i]), names[i]);
     32 
     33 function recursion() {
     34  return bar({ valueOf: function() { return "gotcha"; }});
     35 }
     36 
     37 function gotcha() {
     38  return "gotcha";
     39 }
     40 
     41 // Test invalidation within call made after name lookup.
     42 assertEq(bar("recursion"), "gotcha");