diff options
author | Mark H Weaver <mhw@netris.org> | 2015-12-04 15:50:08 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2015-12-04 15:52:16 -0500 |
commit | b9fa245fcd962a5ae9039ca395e7347718f4cb42 (patch) | |
tree | d79309c653325186a030154910d4f1bd3ca44df7 /gnu/packages/patches/icecat-CVE-2015-7193.patch | |
parent | 2734cbb89598dbd212d598800bef5a1e649f71f7 (diff) | |
download | guix-b9fa245fcd962a5ae9039ca395e7347718f4cb42.tar.gz |
gnu: icecat: Update to 38.4.0-gnu1.
* gnu/packages/patches/icecat-CVE-2015-4513-pt01.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt02.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt03.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt04.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt05.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt06.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt07.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt08.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt09.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt10.patch, gnu/packages/patches/icecat-CVE-2015-4513-pt11.patch, gnu/packages/patches/icecat-CVE-2015-7188.patch, gnu/packages/patches/icecat-CVE-2015-7189.patch, gnu/packages/patches/icecat-CVE-2015-7193.patch, gnu/packages/patches/icecat-CVE-2015-7194.patch, gnu/packages/patches/icecat-CVE-2015-7196.patch, gnu/packages/patches/icecat-CVE-2015-7197.patch, gnu/packages/patches/icecat-CVE-2015-7198.patch, gnu/packages/patches/icecat-CVE-2015-7199.patch: Delete files. * gnu-system.am (dist_patch_DATA): Remove them. * gnu/packages/gnuzilla.scm (icecat): Update to 38.4.0-gnu1. Remove the obsolete patches.
Diffstat (limited to 'gnu/packages/patches/icecat-CVE-2015-7193.patch')
-rw-r--r-- | gnu/packages/patches/icecat-CVE-2015-7193.patch | 397 |
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 - |