tor-browser

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

noExecute-04.js (938B)


      1 // Tests that NX works through the enabled toggle and adding/removing the
      2 // global.
      3 
      4 load(libdir + "asserts.js");
      5 load(libdir + "debuggerNXHelper.js");
      6 
      7 var g = newGlobal({newCompartment: true});
      8 var dbg = new Debugger(g);
      9 
     10 g.eval(`
     11       function f() { }
     12       var o = {
     13         get p() { },
     14         set p(x) { }
     15       };
     16       `);
     17 
     18 var handlers = [() => { g.f(); },
     19                () => { g.o.p } ,
     20                () => { g.o.p = 42; }];
     21 
     22 function testHookEnabled(hookName, trigger) {
     23  for (var h of handlers) {
     24    assertThrowsInstanceOf(h, Debugger.DebuggeeWouldRun);
     25  }
     26 }
     27 
     28 function testHookRemoval(hookName, trigger) {
     29  for (var h of handlers) {
     30    assertThrowsInstanceOf(h, Debugger.DebuggeeWouldRun);
     31    dbg.removeDebuggee(g);
     32    h();
     33    dbg.addDebuggee(g);
     34    assertThrowsInstanceOf(h, Debugger.DebuggeeWouldRun);
     35  }
     36 }
     37 
     38 testDebuggerHooksNX(dbg, g, testHookEnabled);
     39 testDebuggerHooksNX(dbg, g, testHookRemoval);