[tor-commits] [tor-browser/tor-browser-68.1.0esr-9.0-3] Bug 32111: Fixed issue parsing user-provided brige strings

gk at torproject.org gk at torproject.org
Thu Oct 17 11:23:22 UTC 2019


commit 7aca86c1666873378ab6b9845acdee93b16468a9
Author: Richard Pospesel <richard at torproject.org>
Date:   Wed Oct 16 14:37:27 2019 -0700

    Bug 32111: Fixed issue parsing user-provided brige strings
    
    Fixed parseBridgeStrings function in parseFunctions.jsm to now discard
    'bridge' string prefix in user-provided bridge strings. Also now
    properly handling carriage returns ('\r') in bridge strings.
---
 .../torpreferences/content/parseFunctions.jsm         | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/browser/components/torpreferences/content/parseFunctions.jsm b/browser/components/torpreferences/content/parseFunctions.jsm
index a6e6c554ca63..5873c6339983 100644
--- a/browser/components/torpreferences/content/parseFunctions.jsm
+++ b/browser/components/torpreferences/content/parseFunctions.jsm
@@ -53,7 +53,7 @@ let parseUsernamePassword = function(aUsernameColonPassword) {
   return [username, password];
 };
 
-// expects tring in the format: ADDRESS:PORT,ADDRESS:PORT,...
+// expect string in the format: ADDRESS:PORT,ADDRESS:PORT,...
 // returns array of ports (as ints)
 let parseAddrPortList = function(aAddrPortList) {
   let addrPorts = aAddrPortList.split(",");
@@ -62,10 +62,23 @@ let parseAddrPortList = function(aAddrPortList) {
   return retval;
 };
 
-// expects a '/n' delimited string of bridge string, which we split and trim
+// expects a '/n' or '/r/n' delimited string of bridge string, which we split and trim
+// each bridge string can also optionally have 'bridge' at the beginning ie:
+// bridge $(type) $(address):$(port) $(certificate)
+// we strip out the 'bridge' prefix here
 let parseBridgeStrings = function(aBridgeStrings) {
+
+  // replace carriage returns ('\r') with new lines ('\n')
+  aBridgeStrings = aBridgeStrings.replace(/\r/g, "\n");
+  // then replace contiguous new lines ('\n') with a single one
+  aBridgeStrings = aBridgeStrings.replace(/[\n]+/g, "\n");
+
+  // split on the newline and foreach bridge string: trim, remove starting 'bridge' string
+  // finally discard entries that are empty string; empty string could occur if we receive 
+  //  a new line containing only whitespace
   let splitStrings = aBridgeStrings.split("\n");
-  return splitStrings.map(val => val.trim());
+  return splitStrings.map(val => val.trim().replace(/^bridge\s+/i, ""))
+                     .filter(bridgeString => bridgeString != "");
 };
 
 // expecting a ',' delimited list of ints with possible white space between





More information about the tor-commits mailing list