From ad64933e5a9b6463b03ff7a4d18d65dedd34d207 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 22 Nov 2017 11:18:36 +0100 Subject: [PATCH] Bug 1419382 - Moving ownership of nsIInputStream when using netUtil functions - part 2 - NS_NewInputStreamChannel, r=smaug --- docshell/base/nsDocShell.cpp | 3 ++- image/decoders/icon/android/nsIconChannel.cpp | 2 +- image/decoders/icon/gtk/nsIconChannel.cpp | 2 +- layout/style/Loader.cpp | 2 +- netwerk/base/nsNetUtil.cpp | 16 ++++++++-------- netwerk/base/nsNetUtil.h | 16 ++++++++-------- parser/xml/nsSAXXMLReader.cpp | 3 ++- rdf/base/nsRDFXMLParser.cpp | 3 ++- 8 files changed, 25 insertions(+), 22 deletions(-) diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 5f2d2672be3d..e0622aa74844 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -1695,9 +1695,10 @@ nsDocShell::LoadStream(nsIInputStream* aStream, nsIURI* aURI, // build up a channel for this stream. nsCOMPtr channel; + nsCOMPtr stream = aStream; nsresult rv = NS_NewInputStreamChannel(getter_AddRefs(channel), uri, - aStream, + stream.forget(), triggeringPrincipal, nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL, nsIContentPolicy::TYPE_OTHER, diff --git a/image/decoders/icon/android/nsIconChannel.cpp b/image/decoders/icon/android/nsIconChannel.cpp index 11d58ea20a89..ef3543ddd090 100644 --- a/image/decoders/icon/android/nsIconChannel.cpp +++ b/image/decoders/icon/android/nsIconChannel.cpp @@ -118,7 +118,7 @@ moz_icon_to_channel(nsIURI* aURI, const nsACString& aFileExt, nsCOMPtr nullPrincipal = NullPrincipal::Create(); return NS_NewInputStreamChannel(aChannel, aURI, - stream, + stream.forget(), nullPrincipal, nsILoadInfo::SEC_REQUIRE_SAME_ORIGIN_DATA_IS_BLOCKED, nsIContentPolicy::TYPE_INTERNAL_IMAGE, diff --git a/image/decoders/icon/gtk/nsIconChannel.cpp b/image/decoders/icon/gtk/nsIconChannel.cpp index 935fc4fc6e8f..0b8a947b4cc1 100644 --- a/image/decoders/icon/gtk/nsIconChannel.cpp +++ b/image/decoders/icon/gtk/nsIconChannel.cpp @@ -109,7 +109,7 @@ moz_gdk_pixbuf_to_channel(GdkPixbuf* aPixbuf, nsIURI* aURI, nsCOMPtr nullPrincipal = NullPrincipal::Create(); return NS_NewInputStreamChannel(aChannel, aURI, - stream, + stream.forget(), nullPrincipal, nsILoadInfo::SEC_REQUIRE_SAME_ORIGIN_DATA_IS_BLOCKED, nsIContentPolicy::TYPE_INTERNAL_IMAGE, diff --git a/layout/style/Loader.cpp b/layout/style/Loader.cpp index 750d9369bd4c..498acff16b39 100644 --- a/layout/style/Loader.cpp +++ b/layout/style/Loader.cpp @@ -1367,7 +1367,7 @@ Loader::LoadSheet(SheetLoadData* aLoadData, rv = NS_NewInputStreamChannel(getter_AddRefs(channel), aLoadData->mURI, - stream, + stream.forget(), nsContentUtils::GetSystemPrincipal(), securityFlags, contentPolicyType); diff --git a/netwerk/base/nsNetUtil.cpp b/netwerk/base/nsNetUtil.cpp index 08f1f5b20f16..504966e1cc9b 100644 --- a/netwerk/base/nsNetUtil.cpp +++ b/netwerk/base/nsNetUtil.cpp @@ -614,15 +614,15 @@ NS_NewInputStreamChannelInternal(nsIChannel** outChannel, loadInfo); } -nsresult /* NS_NewInputStreamChannelPrincipal */ -NS_NewInputStreamChannel(nsIChannel **outChannel, - nsIURI *aUri, - nsIInputStream *aStream, - nsIPrincipal *aLoadingPrincipal, - nsSecurityFlags aSecurityFlags, +nsresult +NS_NewInputStreamChannel(nsIChannel** outChannel, + nsIURI* aUri, + already_AddRefed aStream, + nsIPrincipal* aLoadingPrincipal, + nsSecurityFlags aSecurityFlags, nsContentPolicyType aContentPolicyType, - const nsACString &aContentType /* = EmptyCString() */, - const nsACString &aContentCharset /* = EmptyCString() */) + const nsACString& aContentType /* = EmptyCString() */, + const nsACString& aContentCharset /* = EmptyCString() */) { nsCOMPtr stream = aStream; return NS_NewInputStreamChannelInternal(outChannel, diff --git a/netwerk/base/nsNetUtil.h b/netwerk/base/nsNetUtil.h index e5c5c2d4e608..c6c48fe2a7f7 100644 --- a/netwerk/base/nsNetUtil.h +++ b/netwerk/base/nsNetUtil.h @@ -263,15 +263,15 @@ NS_NewInputStreamChannelInternal(nsIChannel** outChannel, nsContentPolicyType aContentPolicyType); -nsresult /* NS_NewInputStreamChannelPrincipal */ -NS_NewInputStreamChannel(nsIChannel **outChannel, - nsIURI *aUri, - nsIInputStream *aStream, - nsIPrincipal *aLoadingPrincipal, - nsSecurityFlags aSecurityFlags, +nsresult +NS_NewInputStreamChannel(nsIChannel* *outChannel, + nsIURI* aUri, + already_AddRefed aStream, + nsIPrincipal* aLoadingPrincipal, + nsSecurityFlags aSecurityFlags, nsContentPolicyType aContentPolicyType, - const nsACString &aContentType = EmptyCString(), - const nsACString &aContentCharset = EmptyCString()); + const nsACString& aContentType = EmptyCString(), + const nsACString& aContentCharset = EmptyCString()); nsresult NS_NewInputStreamChannelInternal(nsIChannel **outChannel, nsIURI *aUri, diff --git a/parser/xml/nsSAXXMLReader.cpp b/parser/xml/nsSAXXMLReader.cpp index ec7718cd5c0b..9d6b99889b5d 100644 --- a/parser/xml/nsSAXXMLReader.cpp +++ b/parser/xml/nsSAXXMLReader.cpp @@ -289,9 +289,10 @@ nsSAXXMLReader::ParseFromStream(nsIInputStream *aStreamPtr, // The following channel is never openend, so it does not matter what // securityFlags we pass; let's follow the principle of least privilege. nsCOMPtr parserChannel; + nsCOMPtr tmpStream = stream; rv = NS_NewInputStreamChannel(getter_AddRefs(parserChannel), mBaseURI, - stream, + tmpStream.forget(), nullPrincipal, nsILoadInfo::SEC_REQUIRE_SAME_ORIGIN_DATA_IS_BLOCKED, nsIContentPolicy::TYPE_OTHER, diff --git a/rdf/base/nsRDFXMLParser.cpp b/rdf/base/nsRDFXMLParser.cpp index ad85c81ef66d..d3ac9c7349d8 100644 --- a/rdf/base/nsRDFXMLParser.cpp +++ b/rdf/base/nsRDFXMLParser.cpp @@ -119,9 +119,10 @@ nsRDFXMLParser::ParseString(nsIRDFDataSource* aSink, nsIURI* aBaseURI, const nsA // The following channel is never openend, so it does not matter what // securityFlags we pass; let's follow the principle of least privilege. nsCOMPtr channel; + nsCOMPtr tmpStream = stream; rv = NS_NewInputStreamChannel(getter_AddRefs(channel), aBaseURI, - stream, + tmpStream.forget(), nullPrincipal, nsILoadInfo::SEC_REQUIRE_SAME_ORIGIN_DATA_IS_BLOCKED, nsIContentPolicy::TYPE_OTHER,