[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-browser/tor-browser-68.1.0esr-9.0-3] Bug 32111: Fixed issue parsing user-provided brige strings
commit 7aca86c1666873378ab6b9845acdee93b16468a9
Author: Richard Pospesel <richard@xxxxxxxxxxxxxx>
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
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits