From 871c1d78cea69802a2584cbe76fbaf19962bc443 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sun, 16 Dec 2018 14:35:55 +0100 Subject: Issue #910 part 2. Strip ':' and anything following it from the string passed to the location.protocol setter. --- dom/base/Location.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'dom/base') diff --git a/dom/base/Location.cpp b/dom/base/Location.cpp index 5f8738298..35da1cb8e 100644 --- a/dom/base/Location.cpp +++ b/dom/base/Location.cpp @@ -33,6 +33,7 @@ #include "nsCycleCollectionParticipant.h" #include "nsNullPrincipal.h" #include "ScriptSettings.h" +#include "mozilla/Unused.h" #include "mozilla/dom/LocationBinding.h" namespace mozilla { @@ -716,7 +717,13 @@ Location::SetProtocol(const nsAString& aProtocol) return rv; } - rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol)); + nsAString::const_iterator start, end; + aProtocol.BeginReading(start); + aProtocol.EndReading(end); + nsAString::const_iterator iter(start); + Unused << FindCharInReadable(':', iter, end); + + rv = uri->SetScheme(NS_ConvertUTF16toUTF8(Substring(start, iter))); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } -- cgit v1.2.3