[tor-commits] [tor-browser/tor-browser-84.0-10.5-1] Bug 28125 - Prevent non-Necko network connections

sysrqb at torproject.org sysrqb at torproject.org
Wed Dec 9 17:49:53 UTC 2020


commit d93f2b7f8de1e1f3a300a9e0fdec41d67b043b6a
Author: Matthew Finkel <Matthew.Finkel at gmail.com>
Date:   Thu Oct 25 19:17:09 2018 +0000

    Bug 28125 - Prevent non-Necko network connections
---
 .../gecko/media/GeckoMediaDrmBridgeV21.java        | 49 +---------------------
 .../exoplayer2/upstream/DefaultHttpDataSource.java | 47 ++-------------------
 2 files changed, 4 insertions(+), 92 deletions(-)

diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
index 3ba59bfd6776..eb57b1013642 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoMediaDrmBridgeV21.java
@@ -488,54 +488,7 @@ public class GeckoMediaDrmBridgeV21 implements GeckoMediaDrm {
 
         @Override
         protected Void doInBackground(final Void... params) {
-            HttpURLConnection urlConnection = null;
-            BufferedReader in = null;
-            try {
-                URI finalURI = new URI(mURL + "&signedRequest=" + URLEncoder.encode(new String(mDrmRequest), "UTF-8"));
-                urlConnection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(finalURI);
-                urlConnection.setRequestMethod("POST");
-                if (DEBUG) Log.d(LOGTAG, "Provisioning, posting url =" + finalURI.toString());
-
-                // Add data
-                urlConnection.setRequestProperty("Accept", "*/*");
-                urlConnection.setRequestProperty("User-Agent", getCDMUserAgent());
-                urlConnection.setRequestProperty("Content-Type", "application/json");
-
-                // Execute HTTP Post Request
-                urlConnection.connect();
-
-                int responseCode = urlConnection.getResponseCode();
-                if (responseCode == HttpURLConnection.HTTP_OK) {
-                    in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), StringUtils.UTF_8));
-                    String inputLine;
-                    StringBuffer response = new StringBuffer();
-
-                    while ((inputLine = in.readLine()) != null) {
-                        response.append(inputLine);
-                    }
-                    in.close();
-                    mResponseBody = String.valueOf(response).getBytes(StringUtils.UTF_8);
-                    if (DEBUG) Log.d(LOGTAG, "Provisioning, response received.");
-                    if (mResponseBody != null) Log.d(LOGTAG, "response length=" + mResponseBody.length);
-                } else {
-                    Log.d(LOGTAG, "Provisioning, server returned HTTP error code :" + responseCode);
-                }
-            } catch (IOException e) {
-                Log.e(LOGTAG, "Got exception during posting provisioning request ...", e);
-            } catch (URISyntaxException e) {
-                Log.e(LOGTAG, "Got exception during creating uri ...", e);
-            } finally {
-                if (urlConnection != null) {
-                    urlConnection.disconnect();
-                }
-                try {
-                    if (in != null) {
-                        in.close();
-                    }
-                } catch (IOException e) {
-                    Log.e(LOGTAG, "Exception during closing in ...", e);
-                }
-            }
+            Log.i(LOGTAG, "This is Tor Browser. Skipping.");
             return null;
         }
 
diff --git a/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java b/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
index 6e5095b0a4c9..a585e283ed4e 100644
--- a/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
+++ b/mobile/android/geckoview/src/thirdparty/java/org/mozilla/thirdparty/com/google/android/exoplayer2/upstream/DefaultHttpDataSource.java
@@ -46,6 +46,7 @@ import java.util.regex.Pattern;
 import java.util.zip.GZIPInputStream;
 
 import org.mozilla.gecko.util.ProxySelector;
+
 /**
  * An {@link HttpDataSource} that uses Android's {@link HttpURLConnection}.
  *
@@ -516,50 +517,8 @@ public class DefaultHttpDataSource extends BaseDataSource implements HttpDataSou
       boolean followRedirects,
       Map<String, String> requestParameters)
       throws IOException, URISyntaxException {
-    /**
-     * Tor Project modified the way the connection object was created. For the sake of
-     * simplicity, instead of duplicating the whole file we changed the connection object
-     * to use the ProxySelector.
-     */
-    HttpURLConnection connection = (HttpURLConnection) ProxySelector.openConnectionWithProxy(url.toURI());
-
-    connection.setConnectTimeout(connectTimeoutMillis);
-    connection.setReadTimeout(readTimeoutMillis);
-
-    Map<String, String> requestHeaders = new HashMap<>();
-    if (defaultRequestProperties != null) {
-      requestHeaders.putAll(defaultRequestProperties.getSnapshot());
-    }
-    requestHeaders.putAll(requestProperties.getSnapshot());
-    requestHeaders.putAll(requestParameters);
-
-    for (Map.Entry<String, String> property : requestHeaders.entrySet()) {
-      connection.setRequestProperty(property.getKey(), property.getValue());
-    }
-
-    if (!(position == 0 && length == C.LENGTH_UNSET)) {
-      String rangeRequest = "bytes=" + position + "-";
-      if (length != C.LENGTH_UNSET) {
-        rangeRequest += (position + length - 1);
-      }
-      connection.setRequestProperty("Range", rangeRequest);
-    }
-    connection.setRequestProperty("User-Agent", userAgent);
-    connection.setRequestProperty("Accept-Encoding", allowGzip ? "gzip" : "identity");
-    connection.setInstanceFollowRedirects(followRedirects);
-    connection.setDoOutput(httpBody != null);
-    connection.setRequestMethod(DataSpec.getStringForHttpMethod(httpMethod));
-
-    if (httpBody != null) {
-      connection.setFixedLengthStreamingMode(httpBody.length);
-      connection.connect();
-      OutputStream os = connection.getOutputStream();
-      os.write(httpBody);
-      os.close();
-    } else {
-      connection.connect();
-    }
-    return connection;
+    Log.i(TAG, "This is Tor Browser. Skipping.");
+    throw new IOException();
   }
 
   /** Creates an {@link HttpURLConnection} that is connected with the {@code url}. */





More information about the tor-commits mailing list