tor-browser

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

812785.html (1846B)


      1 <!DOCTYPE HTML>
      2 <html class="reftest-wait">
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=812785
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Bug 812785 - WebRTC use-after-free crash</title>
      9  <script type="application/javascript">
     10    var pc1, pc2, pc1_offer, pc2_answer, localAudio, remoteAudio;
     11 
     12    function onFailure(code) {
     13      stop();
     14    }
     15 
     16    function stop() {
     17      pc1.close(); pc1 = null;
     18      pc2.close(); pc2 = null;
     19 
     20      var index = localStorage.index || 0;
     21      if (index < 5) {
     22        localStorage.index = index + 1;
     23        window.location.reload();
     24      }
     25      else {
     26        finish();
     27      }
     28    }
     29 
     30    function start() {
     31      localAudio = document.getElementById("local");
     32      remoteAudio = document.getElementById("remote");
     33 
     34      var stream = localAudio.mozCaptureStreamUntilEnded();
     35 
     36      pc1 = new RTCPeerConnection();
     37      pc2 = new RTCPeerConnection();
     38 
     39      pc1.addStream(stream);
     40      pc1.createOffer(function (offer) {
     41        pc1_offer = offer;
     42        pc1.setLocalDescription(pc1_offer, function () {
     43          pc2.setRemoteDescription(pc1_offer, function () {
     44            pc2.createAnswer(function (answer) {
     45              pc2_answer = answer;
     46              pc2.setLocalDescription(pc2_answer, function () {
     47                pc1.setRemoteDescription(pc2_answer, function step6() {
     48                  stop();
     49                }, onFailure);
     50              }, onFailure);
     51            }, onFailure);
     52          }, onFailure);
     53        }, onFailure);
     54      }, onFailure);
     55    }
     56 
     57    function finish() {
     58      delete localStorage["index"];
     59 
     60      document.documentElement.removeAttribute("class");
     61    }
     62  </script>
     63 </head>
     64 
     65 <body onload="setTimeout(start, 100)">
     66  <audio id="local" controls autoplay><source type="audio/wav" src="" /></audio>
     67  <audio id="remote" controls></audio>
     68 </body>
     69 </html>