Closed
Bug 1282750
Opened 8 years ago
Closed 8 years ago
Convert AboutCache to use AsyncOpen2()
Categories
(Core :: DOM: Security, defect)
Core
DOM: Security
Tracking
()
RESOLVED
FIXED
mozilla50
People
(Reporter: ckerschb, Assigned: ckerschb)
References
Details
(Whiteboard: [domsecurity-active])
Attachments
(1 file, 2 obsolete files)
1.77 KB,
patch
|
mayhemer
:
review+
|
Details | Diff | Splinter Review |
No description provided.
Assignee | ||
Updated•8 years ago
|
Assignee | ||
Updated•8 years ago
|
Summary: Convert ABoutCache to use AsyncOpen2() → Convert AboutCache to use AsyncOpen2()
Assignee | ||
Comment 1•8 years ago
|
||
Hey Honza, I am not entirely sure how aboutChache works, but I would suppose we should call asyncOpen2() on the underlying channel, right? Is it possible that the underlying channel does not have a loadInfo attached? If so, then potentially we should branch and have something like: nsCOMPtr<nsILoadInfo> loadInfo = mChannel->GetLoadInfo(); if (loadInfo && loadInfo->GetSecurityMode() != 0) { return mChannel->AsyncOpen2(aListener); } return mChannel->AsyncOpen2(aListener, nullptr); What do you think?
Attachment #8765877 -
Flags: review?(honzab.moz)
Comment 2•8 years ago
|
||
Comment on attachment 8765877 [details] [diff] [review] bug_1282750_asyncOpen2_aboutcache.patch Review of attachment 8765877 [details] [diff] [review]: ----------------------------------------------------------------- ::: netwerk/protocol/about/nsAboutCache.cpp @@ +143,5 @@ > // Kick the walk loop. > + nsresult rv = VisitNextStorage(); > + NS_ENSURE_SUCCESS(rv, rv); > + MOZ_ASSERT(!aContext, "asyncOpen2() does not take a context argument"); > + return mChannel->AsyncOpen2(aListener); please keep nsresult rv as the first and lonely declaration please keep the blank lines that separate logical blocks please don't use the NS_ENSURE_SUCCESS here, this is no critical code and there is no need to pollute the console. on the other hand, if you want to argue pro-NS_ENSURE, then why not also for the AsyncOpen call? @@ +148,5 @@ > } > > NS_IMETHODIMP nsAboutCache::Channel::AsyncOpen2(nsIStreamListener *aListener) > { > return AsyncOpen(aListener, nullptr); maybe rather implement this properly? (I mean - call AsyncOpen2 on mChannel)
Attachment #8765877 -
Flags: review?(honzab.moz)
Comment 3•8 years ago
|
||
also, when you are here, please make Open and Open2 just throw NOT_IMPLEMENTED. it's a foot gun anyway, it will deadlock main thread when called. thanks.
Assignee | ||
Comment 4•8 years ago
|
||
(In reply to Honza Bambas (:mayhemer) from comment #2) > > + return mChannel->AsyncOpen2(aListener); > > please keep nsresult rv as the first and lonely declaration > please keep the blank lines that separate logical blocks > please don't use the NS_ENSURE_SUCCESS here, this is no critical code and > there is no need to pollute the console. on the other hand, if you want to > argue pro-NS_ENSURE, then why not also for the AsyncOpen call? Sure, I don't have a strong opinion about that. > @@ +148,5 @@ > > } > > > > NS_IMETHODIMP nsAboutCache::Channel::AsyncOpen2(nsIStreamListener *aListener) > > { > > return AsyncOpen(aListener, nullptr); > > maybe rather implement this properly? (I mean - call AsyncOpen2 on mChannel) We use the same pattern everywhere, AsyncOpen2() calls asyncOpen() (even for nested channels like viewsourceChannel). I would like to keep it that way so we are consistent in what we are doing. (In reply to Honza Bambas (:mayhemer) from comment #3) > also, when you are here, please make Open and Open2 just throw > NOT_IMPLEMENTED. it's a foot gun anyway, it will deadlock main thread when > called. thanks. Sure thing!
Attachment #8765895 -
Flags: review?(honzab.moz)
Assignee | ||
Updated•8 years ago
|
Attachment #8765877 -
Attachment is obsolete: true
Comment 5•8 years ago
|
||
Comment on attachment 8765895 [details] [diff] [review] bug_1282750_asyncOpen2_aboutcache.patch Review of attachment 8765895 [details] [diff] [review]: ----------------------------------------------------------------- thanks! I presume, one day we remove asyncOpen(1) altogether, right?
Attachment #8765895 -
Flags: review?(honzab.moz) → review+
Assignee | ||
Comment 6•8 years ago
|
||
> thanks! I presume, one day we remove asyncOpen(1) altogether, right? Potentially: https://bugzilla.mozilla.org/show_bug.cgi?id=1279428 https://bugzilla.mozilla.org/show_bug.cgi?id=1279429
Assignee | ||
Updated•8 years ago
|
Keywords: checkin-needed
Pushed by mozilla@christophkerschbaumer.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/423f4de189ac Convert AboutCache to use AsyncOpen2() r=honza
Keywords: checkin-needed
Comment 8•8 years ago
|
||
Backed out for failing browser_aboutURLs.js: https://hg.mozilla.org/integration/mozilla-inbound/rev/2b0a234db73110df9317a3d03fac6e58db83870e Push with failure: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=b2bda3d70086d111871f8c425cfaa5cb02bd3052 Failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=30797622&repo=mozilla-inbound
Flags: needinfo?(ckerschb)
Assignee | ||
Comment 9•8 years ago
|
||
(In reply to Sebastian H. [:aryx][:archaeopteryx] from comment #8) > Backed out for failing browser_aboutURLs.js: > > https://hg.mozilla.org/integration/mozilla-inbound/rev/ > 2b0a234db73110df9317a3d03fac6e58db83870e > > Push with failure: > https://treeherder.mozilla.org/#/jobs?repo=mozilla- > inbound&revision=b2bda3d70086d111871f8c425cfaa5cb02bd3052 > Failure log: > https://treeherder.mozilla.org/logviewer.html#?job_id=30797622&repo=mozilla- > inbound Sorry for the bustage and thanks for backing it out - I'll have a look.
Flags: needinfo?(ckerschb)
Assignee | ||
Comment 10•8 years ago
|
||
Arrh, about:cache for a toplevel TYPE_DOCUMENT loads does not have the right security flags within the loadinfo yet, since we haven't converted docshell loads to use AsyncOpen2() as of now. I suppose we have to wait till Bug 1182569 is landed, see details for the load: doContentSecurityCheck { channelURI: about:cache loadingPrincipal: nullptr triggeringPrincipal: SystemPrincipal contentPolicyType: 6 securityMode: SEC_NORMAL initalSecurityChecksDone: no enforceSecurity: no }
Depends on: 1182569
Assignee | ||
Comment 11•8 years ago
|
||
Hey Honza, it seems when running browser_aboutURLs.js we are about to open a TYPE_DOCUMENT channel, but since we haven't converted docShell loads to use asyncOpen2() yet, we are hitting assertions within the contentSecurityManager. Recently I created a helper function that checks whether the channel can be openend using asyncOpen2() [1]. Instead of waiting for docshell loads to be converted we could use NS_MaybeOpenChannelUsingAsyncOpen2() as an interim solution. Can we agree on that? [1] https://hg.mozilla.org/integration/mozilla-inbound/rev/063d90be43fc#l3.47
Attachment #8766319 -
Flags: review?(honzab.moz)
Assignee | ||
Comment 12•8 years ago
|
||
Comment on attachment 8765895 [details] [diff] [review] bug_1282750_asyncOpen2_aboutcache.patch ># HG changeset patch ># User Christoph Kerschbaumer <ckerschb@christophkerschbaumer.com> ># Date 1467120740 -7200 ># Tue Jun 28 15:32:20 2016 +0200 ># Node ID 1d316fb5e5f72c7b322ca2e5d1f2f1aa6f644fb9 ># Parent 2ab57664bf7cafdd64e136e341527c275fc8c3aa >Bug 1282750 - Convert AboutCache to use AsyncOpen2() r=honza > >diff --git a/netwerk/protocol/about/nsAboutCache.cpp b/netwerk/protocol/about/nsAboutCache.cpp >--- a/netwerk/protocol/about/nsAboutCache.cpp >+++ b/netwerk/protocol/about/nsAboutCache.cpp >@@ -141,48 +141,36 @@ NS_IMETHODIMP nsAboutCache::Channel::Asy > if (!mChannel) { > return NS_ERROR_UNEXPECTED; > } > > // Kick the walk loop. > rv = VisitNextStorage(); > if (NS_FAILED(rv)) return rv; > >- rv = mChannel->AsyncOpen(aListener, aContext); >+ MOZ_ASSERT(!aContext, "asyncOpen2() does not take a context argument"); >+ rv = mChannel->AsyncOpen2(aListener); > if (NS_FAILED(rv)) return rv; > > return NS_OK; > } > > NS_IMETHODIMP nsAboutCache::Channel::AsyncOpen2(nsIStreamListener *aListener) > { > return AsyncOpen(aListener, nullptr); > } > > NS_IMETHODIMP nsAboutCache::Channel::Open(nsIInputStream * *_retval) > { >- nsresult rv; >- >- if (!mChannel) { >- return NS_ERROR_UNEXPECTED; >- } >- >- // Kick the walk loop. >- rv = VisitNextStorage(); >- if (NS_FAILED(rv)) return rv; >- >- rv = mChannel->Open(_retval); >- if (NS_FAILED(rv)) return rv; >- >- return NS_OK; >+ return NS_ERROR_NOT_IMPLEMENTED; > } > > NS_IMETHODIMP nsAboutCache::Channel::Open2(nsIInputStream * *_retval) > { >- return Open(_retval); >+ return NS_ERROR_NOT_IMPLEMENTED; > } > > nsresult > nsAboutCache::Channel::ParseURI(nsIURI * uri, nsACString & storage) > { > // > // about:cache[?storage=<storage-name>[&context=<context-key>]] > //
Attachment #8765895 -
Attachment is obsolete: true
Updated•8 years ago
|
Attachment #8766319 -
Flags: review?(honzab.moz) → review+
Comment 13•8 years ago
|
||
Pushed by mozilla@christophkerschbaumer.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/4306097418bf Convert AboutCache to use AsyncOpen2() r=honza
Comment 14•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/4306097418bf
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
status-firefox50:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla50
Comment 15•8 years ago
|
||
uplift |
Gijs pushed this to mozilla-release. https://hg.mozilla.org/releases/mozilla-release/rev/7356baae8e736a6c9444bdd21562df806a39766b
status-firefox49:
--- → fixed
You need to log in
before you can comment on or make changes to this bug.
Description
•