summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/icecat-CVE-2015-7193.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/icecat-CVE-2015-7193.patch')
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-7193.patch397
1 files changed, 0 insertions, 397 deletions
diff --git a/gnu/packages/patches/icecat-CVE-2015-7193.patch b/gnu/packages/patches/icecat-CVE-2015-7193.patch
deleted file mode 100644
index 798799de9f..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-7193.patch
+++ /dev/null
@@ -1,397 +0,0 @@
-From d135e3b3c48811c577e1632a41c5c50bc55c035c Mon Sep 17 00:00:00 2001
-From: Ehsan Akhgari <ehsan@mozilla.com>
-Date: Tue, 20 Oct 2015 11:40:12 +0200
-Subject: [PATCH] Bug 1210302 - Add a NS_ParseRequestContentType API; ba=al,
- r=mcmanus, r=sicking, a=al
-
---HG--
-extra : amend_source : d93021b626709b03f6499029dc3d1813cccba386
----
- docshell/base/nsDocShell.cpp | 2 +-
- dom/base/Navigator.cpp | 4 +--
- dom/base/nsContentUtils.cpp | 2 +-
- dom/html/nsHTMLDocument.cpp | 2 +-
- dom/manifest/ManifestProcessor.jsm | 6 ++--
- netwerk/base/moz.build | 1 +
- netwerk/base/nsINetUtil_ESR_38.idl | 14 +++++++++
- netwerk/base/nsIOService.cpp | 12 ++++++++
- netwerk/base/nsIOService.h | 3 ++
- netwerk/base/nsNetUtil.h | 21 +++++++++++++
- netwerk/base/nsURLHelper.cpp | 60 +++++++++++++++++++++++++++++++++++---
- netwerk/base/nsURLHelper.h | 32 +++++++++++++++-----
- 12 files changed, 139 insertions(+), 20 deletions(-)
- create mode 100644 netwerk/base/nsINetUtil_ESR_38.idl
-
-diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index bcc205c..4fc7c34 100644
---- a/docshell/base/nsDocShell.cpp
-+++ b/docshell/base/nsDocShell.cpp
-@@ -13519,7 +13519,7 @@ nsDocShell::OnLinkClickSync(nsIContent* aContent,
- anchor->GetType(typeHint);
- NS_ConvertUTF16toUTF8 utf8Hint(typeHint);
- nsAutoCString type, dummy;
-- NS_ParseContentType(utf8Hint, type, dummy);
-+ NS_ParseRequestContentType(utf8Hint, type, dummy);
- CopyUTF8toUTF16(type, typeHint);
- }
-
-diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
-index f4ea502..7288420 100644
---- a/dom/base/Navigator.cpp
-+++ b/dom/base/Navigator.cpp
-@@ -1221,9 +1221,9 @@ Navigator::SendBeacon(const nsAString& aUrl,
- rv = secMan->CheckSameOriginURI(documentURI, uri, false);
- bool crossOrigin = NS_FAILED(rv);
- nsAutoCString contentType, parsedCharset;
-- rv = NS_ParseContentType(mimeType, contentType, parsedCharset);
-+ rv = NS_ParseRequestContentType(mimeType, contentType, parsedCharset);
- if (crossOrigin &&
-- contentType.Length() > 0 &&
-+ mimeType.Length() > 0 &&
- !contentType.Equals(APPLICATION_WWW_FORM_URLENCODED) &&
- !contentType.Equals(MULTIPART_FORM_DATA) &&
- !contentType.Equals(TEXT_PLAIN)) {
-diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
-index 5e8dbd6..686f7bf 100644
---- a/dom/base/nsContentUtils.cpp
-+++ b/dom/base/nsContentUtils.cpp
-@@ -7001,7 +7001,7 @@ nsContentUtils::IsAllowedNonCorsContentType(const nsACString& aHeaderValue)
- nsAutoCString contentType;
- nsAutoCString unused;
-
-- nsresult rv = NS_ParseContentType(aHeaderValue, contentType, unused);
-+ nsresult rv = NS_ParseRequestContentType(aHeaderValue, contentType, unused);
- if (NS_FAILED(rv)) {
- return false;
- }
-diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp
-index 7481109..d195792 100644
---- a/dom/html/nsHTMLDocument.cpp
-+++ b/dom/html/nsHTMLDocument.cpp
-@@ -1422,7 +1422,7 @@ nsHTMLDocument::Open(JSContext* cx,
- nsAutoString type;
- nsContentUtils::ASCIIToLower(aType, type);
- nsAutoCString actualType, dummy;
-- NS_ParseContentType(NS_ConvertUTF16toUTF8(type), actualType, dummy);
-+ NS_ParseRequestContentType(NS_ConvertUTF16toUTF8(type), actualType, dummy);
- if (!actualType.EqualsLiteral("text/html") &&
- !type.EqualsLiteral("replace")) {
- contentType.AssignLiteral("text/plain");
-diff --git a/dom/manifest/ManifestProcessor.jsm b/dom/manifest/ManifestProcessor.jsm
-index b6df920..f16881a 100644
---- a/dom/manifest/ManifestProcessor.jsm
-+++ b/dom/manifest/ManifestProcessor.jsm
-@@ -31,7 +31,7 @@ const imports = {};
- Cu.import('resource://gre/modules/Services.jsm', imports);
- Cu.importGlobalProperties(['URL']);
- const securityManager = imports.Services.scriptSecurityManager;
--const netutil = Cc['@mozilla.org/network/util;1'].getService(Ci.nsINetUtil);
-+const netutil = Cc['@mozilla.org/network/util;1'].getService(Ci.nsINetUtil_ESR_38);
- const defaultDisplayMode = 'browser';
- const displayModes = new Set([
- 'fullscreen',
-@@ -258,7 +258,7 @@ this.ManifestProcessor.prototype.process = function({
- };
- let value = extractValue(obj),
- isParsable = (typeof value === 'string' && value.length > 0);
-- value = (isParsable) ? netutil.parseContentType(value.trim(), charset, hadCharset) : undefined;
-+ value = (isParsable) ? netutil.parseRequestContentType(value.trim(), charset, hadCharset) : undefined;
- return (value === '') ? undefined : value;
- }
-
-@@ -354,4 +354,4 @@ this.ManifestProcessor.prototype.process = function({
- };
- processedManifest.scope = processScopeMember(manifest, manifestURL, docURL, processedManifest.start_url);
- return processedManifest;
--};
-\ No newline at end of file
-+};
-diff --git a/netwerk/base/moz.build b/netwerk/base/moz.build
-index 877365b..deedf76 100644
---- a/netwerk/base/moz.build
-+++ b/netwerk/base/moz.build
-@@ -59,6 +59,7 @@ XPIDL_SOURCES += [
- 'nsINestedURI.idl',
- 'nsINetAddr.idl',
- 'nsINetUtil.idl',
-+ 'nsINetUtil_ESR_38.idl',
- 'nsINetworkInterceptController.idl',
- 'nsINetworkLinkService.idl',
- 'nsINetworkPredictor.idl',
-diff --git a/netwerk/base/nsINetUtil_ESR_38.idl b/netwerk/base/nsINetUtil_ESR_38.idl
-new file mode 100644
-index 0000000..7ef40e9
---- /dev/null
-+++ b/netwerk/base/nsINetUtil_ESR_38.idl
-@@ -0,0 +1,14 @@
-+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this
-+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#include "nsISupports.idl"
-+
-+[scriptable, uuid(e82f2b9d-8bac-48bb-ade7-26a7cd4fb894)]
-+interface nsINetUtil_ESR_38 : nsISupports
-+{
-+ AUTF8String parseRequestContentType(in AUTF8String aTypeHeader,
-+ out AUTF8String aCharset,
-+ out boolean aHadCharset);
-+};
-diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
-index 83db86f..9a17e8b 100644
---- a/netwerk/base/nsIOService.cpp
-+++ b/netwerk/base/nsIOService.cpp
-@@ -321,6 +321,7 @@ NS_IMPL_ISUPPORTS(nsIOService,
- nsIIOService,
- nsIIOService2,
- nsINetUtil,
-+ nsINetUtil_ESR_38,
- nsISpeculativeConnect,
- nsIObserver,
- nsISupportsWeakReference)
-@@ -1280,6 +1281,17 @@ nsIOService::Observe(nsISupports *subject,
-
- // nsINetUtil interface
- NS_IMETHODIMP
-+nsIOService::ParseRequestContentType(const nsACString &aTypeHeader,
-+ nsACString &aCharset,
-+ bool *aHadCharset,
-+ nsACString &aContentType)
-+{
-+ net_ParseRequestContentType(aTypeHeader, aContentType, aCharset, aHadCharset);
-+ return NS_OK;
-+}
-+
-+// nsINetUtil interface
-+NS_IMETHODIMP
- nsIOService::ParseContentType(const nsACString &aTypeHeader,
- nsACString &aCharset,
- bool *aHadCharset,
-diff --git a/netwerk/base/nsIOService.h b/netwerk/base/nsIOService.h
-index acd501c..b125709 100644
---- a/netwerk/base/nsIOService.h
-+++ b/netwerk/base/nsIOService.h
-@@ -14,6 +14,7 @@
- #include "nsIObserver.h"
- #include "nsWeakReference.h"
- #include "nsINetUtil.h"
-+#include "nsINetUtil_ESR_38.h"
- #include "nsIChannelEventSink.h"
- #include "nsCategoryCache.h"
- #include "nsISpeculativeConnect.h"
-@@ -47,6 +48,7 @@ namespace net {
- class nsIOService final : public nsIIOService2
- , public nsIObserver
- , public nsINetUtil
-+ , public nsINetUtil_ESR_38
- , public nsISpeculativeConnect
- , public nsSupportsWeakReference
- {
-@@ -56,6 +58,7 @@ public:
- NS_DECL_NSIIOSERVICE2
- NS_DECL_NSIOBSERVER
- NS_DECL_NSINETUTIL
-+ NS_DECL_NSINETUTIL_ESR_38
- NS_DECL_NSISPECULATIVECONNECT
-
- // Gets the singleton instance of the IO Service, creating it as needed
-diff --git a/netwerk/base/nsNetUtil.h b/netwerk/base/nsNetUtil.h
-index ec69716..df8874c 100644
---- a/netwerk/base/nsNetUtil.h
-+++ b/netwerk/base/nsNetUtil.h
-@@ -56,6 +56,7 @@
- #include "nsISyncStreamListener.h"
- #include "nsInterfaceRequestorAgg.h"
- #include "nsINetUtil.h"
-+#include "nsINetUtil_ESR_38.h"
- #include "nsIURIWithPrincipal.h"
- #include "nsIAuthPrompt.h"
- #include "nsIAuthPrompt2.h"
-@@ -1228,6 +1229,26 @@ NS_GetReferrerFromChannel(nsIChannel *channel,
- }
-
- inline nsresult
-+NS_ParseRequestContentType(const nsACString &rawContentType,
-+ nsCString &contentType,
-+ nsCString &contentCharset)
-+{
-+ // contentCharset is left untouched if not present in rawContentType
-+ nsresult rv;
-+ nsCOMPtr<nsINetUtil> util = do_GetNetUtil(&rv);
-+ NS_ENSURE_SUCCESS(rv, rv);
-+ nsCOMPtr<nsINetUtil_ESR_38> utilESR38 = do_QueryInterface(util, &rv);
-+ NS_ENSURE_SUCCESS(rv, rv);
-+ nsCString charset;
-+ bool hadCharset;
-+ rv = utilESR38->ParseRequestContentType(rawContentType, charset, &hadCharset,
-+ contentType);
-+ if (NS_SUCCEEDED(rv) && hadCharset)
-+ contentCharset = charset;
-+ return rv;
-+}
-+
-+inline nsresult
- NS_ParseContentType(const nsACString &rawContentType,
- nsCString &contentType,
- nsCString &contentCharset)
-diff --git a/netwerk/base/nsURLHelper.cpp b/netwerk/base/nsURLHelper.cpp
-index 10ea849..cdb2120 100644
---- a/netwerk/base/nsURLHelper.cpp
-+++ b/netwerk/base/nsURLHelper.cpp
-@@ -803,7 +803,8 @@ net_ParseMediaType(const nsACString &aMediaTypeStr,
- int32_t aOffset,
- bool *aHadCharset,
- int32_t *aCharsetStart,
-- int32_t *aCharsetEnd)
-+ int32_t *aCharsetEnd,
-+ bool aStrict)
- {
- const nsCString& flatStr = PromiseFlatCString(aMediaTypeStr);
- const char* start = flatStr.get();
-@@ -820,6 +821,8 @@ net_ParseMediaType(const nsACString &aMediaTypeStr,
- int32_t charsetParamStart = 0;
- int32_t charsetParamEnd = 0;
-
-+ uint32_t consumed = typeEnd - type;
-+
- // Iterate over parameters
- bool typeHasCharset = false;
- uint32_t paramStart = flatStr.FindChar(';', typeEnd - start);
-@@ -843,6 +846,7 @@ net_ParseMediaType(const nsACString &aMediaTypeStr,
- charsetParamEnd = curParamEnd;
- }
-
-+ consumed = curParamEnd;
- curParamStart = curParamEnd + 1;
- } while (curParamStart < flatStr.Length());
- }
-@@ -872,8 +876,10 @@ net_ParseMediaType(const nsACString &aMediaTypeStr,
- // some servers give junk after the charset parameter, which may
- // include a comma, so this check makes us a bit more tolerant.
-
-- if (type != typeEnd && strncmp(type, "*/*", typeEnd - type) != 0 &&
-- memchr(type, '/', typeEnd - type) != nullptr) {
-+ if (type != typeEnd &&
-+ memchr(type, '/', typeEnd - type) != nullptr &&
-+ (aStrict ? (net_FindCharNotInSet(start + consumed, end, HTTP_LWS) == end) :
-+ (strncmp(type, "*/*", typeEnd - type) != 0))) {
- // Common case here is that aContentType is empty
- bool eq = !aContentType.IsEmpty() &&
- aContentType.Equals(Substring(type, typeEnd),
-@@ -980,13 +986,59 @@ net_ParseContentType(const nsACString &aHeaderStr,
- net_ParseMediaType(Substring(flatStr, curTypeStart,
- curTypeEnd - curTypeStart),
- aContentType, aContentCharset, curTypeStart,
-- aHadCharset, aCharsetStart, aCharsetEnd);
-+ aHadCharset, aCharsetStart, aCharsetEnd, false);
-
- // And let's move on to the next media-type
- curTypeStart = curTypeEnd + 1;
- } while (curTypeStart < flatStr.Length());
- }
-
-+void
-+net_ParseRequestContentType(const nsACString &aHeaderStr,
-+ nsACString &aContentType,
-+ nsACString &aContentCharset,
-+ bool *aHadCharset)
-+{
-+ //
-+ // Augmented BNF (from RFC 7231 section 3.1.1.1):
-+ //
-+ // media-type = type "/" subtype *( OWS ";" OWS parameter )
-+ // type = token
-+ // subtype = token
-+ // parameter = token "=" ( token / quoted-string )
-+ //
-+ // Examples:
-+ //
-+ // text/html
-+ // text/html; charset=ISO-8859-1
-+ // text/html; charset="ISO-8859-1"
-+ // application/octet-stream
-+ //
-+
-+ aContentType.Truncate();
-+ aContentCharset.Truncate();
-+ *aHadCharset = false;
-+ const nsCString& flatStr = PromiseFlatCString(aHeaderStr);
-+
-+ // At this point curTypeEnd points to the spot where the media-type
-+ // starting at curTypeEnd ends. Time to parse that!
-+ nsAutoCString contentType, contentCharset;
-+ bool hadCharset = false;
-+ int32_t dummy1, dummy2;
-+ uint32_t typeEnd = net_FindMediaDelimiter(flatStr, 0, ',');
-+ if (typeEnd != flatStr.Length()) {
-+ // We have some stuff left at the end, so this is not a valid
-+ // request Content-Type header.
-+ return;
-+ }
-+ net_ParseMediaType(flatStr, contentType, contentCharset, 0,
-+ &hadCharset, &dummy1, &dummy2, true);
-+
-+ aContentType = contentType;
-+ aContentCharset = contentCharset;
-+ *aHadCharset = hadCharset;
-+}
-+
- bool
- net_IsValidHostName(const nsCSubstring &host)
- {
-diff --git a/netwerk/base/nsURLHelper.h b/netwerk/base/nsURLHelper.h
-index 816a3c5..21e17be 100644
---- a/netwerk/base/nsURLHelper.h
-+++ b/netwerk/base/nsURLHelper.h
-@@ -172,11 +172,27 @@ char * net_RFindCharNotInSet(const char *str, const char *end, const char *set);
- * specified), aHadCharset is set to false. Otherwise, it's set to
- * true. Note that aContentCharset can be empty even if aHadCharset
- * is true.
-+ *
-+ * This parsing is suitable for HTTP request. Use net_ParseContentType
-+ * for parsing this header in HTTP responses.
-+ */
-+void net_ParseRequestContentType(const nsACString &aHeaderStr,
-+ nsACString &aContentType,
-+ nsACString &aContentCharset,
-+ bool* aHadCharset);
-+
-+/**
-+ * Parses a content-type header and returns the content type and
-+ * charset (if any). aCharset is not modified if no charset is
-+ * specified in anywhere in aHeaderStr. In that case (no charset
-+ * specified), aHadCharset is set to false. Otherwise, it's set to
-+ * true. Note that aContentCharset can be empty even if aHadCharset
-+ * is true.
- */
- void net_ParseContentType(const nsACString &aHeaderStr,
-- nsACString &aContentType,
-- nsACString &aContentCharset,
-- bool* aHadCharset);
-+ nsACString &aContentType,
-+ nsACString &aContentCharset,
-+ bool* aHadCharset);
- /**
- * As above, but also returns the start and end indexes for the charset
- * parameter in aHeaderStr. These are indices for the entire parameter, NOT
-@@ -187,11 +203,11 @@ void net_ParseContentType(const nsACString &aHeaderStr,
- * *aCharsetStart is nonnegative; this corresponds to charset="".
- */
- void net_ParseContentType(const nsACString &aHeaderStr,
-- nsACString &aContentType,
-- nsACString &aContentCharset,
-- bool *aHadCharset,
-- int32_t *aCharsetStart,
-- int32_t *aCharsetEnd);
-+ nsACString &aContentType,
-+ nsACString &aContentCharset,
-+ bool *aHadCharset,
-+ int32_t *aCharsetStart,
-+ int32_t *aCharsetEnd);
-
- /* inline versions */
-
---
-2.5.0
-