From aa130641c261789528d81c5bc34b2da7a90bdc40 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sun, 16 Dec 2018 13:09:21 +0100 Subject: Issue #910 part 1. Don't navigate when location.protocol is set to anything other than http or https. --- dom/base/Location.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'dom/base') diff --git a/dom/base/Location.cpp b/dom/base/Location.cpp index 7b3722f09..5f8738298 100644 --- a/dom/base/Location.cpp +++ b/dom/base/Location.cpp @@ -730,6 +730,23 @@ Location::SetProtocol(const nsAString& aProtocol) if (NS_FAILED(rv)) { return rv; } + + bool isHttp; + rv = uri->SchemeIs("http", &isHttp); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + bool isHttps; + rv = uri->SchemeIs("https", &isHttps); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + if (!isHttp && !isHttps) { + // No-op, per spec. + return NS_OK; + } return SetURI(uri); } -- cgit v1.2.3