Convert nsJSProtocolHandler to use asyncOpen2()

RESOLVED DUPLICATE of bug 1182569

Status

()

Core
DOM: Security
RESOLVED DUPLICATE of bug 1182569
2 years ago
2 years ago

People

(Reporter: ckerschb, Assigned: ckerschb)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [domsecurity-active])

(Assignee)

Description

2 years ago
It seems that channel is never openen anyway [1].

[1] https://hg.mozilla.org/mozilla-central/rev/37b591f54363#l2.12
(Assignee)

Updated

2 years ago
Assignee: nobody → ckerschb
Blocks: 1182535
Status: NEW → ASSIGNED
Whiteboard: [domsecurity-active]
(Assignee)

Comment 1

2 years ago
doContentSecurityCheck {
  channelURI: javascript:"<script>parent.passJSUrl%20=%20true</script>"
  loadingPrincipal: http://mochi.test:8888/tests/dom/jsurl/test/test_bug351633-3.html
  triggeringPrincipal: http://mochi.test:8888/tests/dom/jsurl/test/test_bug351633-3.html
  contentPolicyType: 29
  securityMode:
  initalSecurityChecksDone: no
  enforceSecurity: no
}
Assertion failure: false (need one securityflag from nsILoadInfo to perform security checks), at /home/ckerschb/moz/mc/dom/security/nsContentSecurityManager.cpp:25
#01: ValidateSecurityFlags (/home/ckerschb/moz/mc/dom/security/nsContentSecurityManager.cpp:25)
#02: nsContentSecurityManager::doContentSecurityCheck(nsIChannel*, nsCOMPtr<nsIStreamListener>&) (/home/ckerschb/moz/mc/dom/security/nsContentSecurityManager.cpp:483 (discriminator 3))
#03: nsBaseChannel::AsyncOpen2(nsIStreamListener*) (/home/ckerschb/moz/mc/netwerk/base/nsBaseChannel.cpp:700)
#04: nsJSChannel::EvaluateScript() (/home/ckerschb/moz/mc/dom/jsurl/nsJSProtocolHandler.cpp:772)
#05: decltype (((*{parm#1}).*{parm#2})()) nsRunnableMethodArguments<>::applyImpl<nsJSChannel, void (nsJSChannel::*)()>(nsJSChannel*, void (nsJSChannel::*)(), mozilla::Tuple<>&, mozilla::IndexSequence<>) (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/nsThreadUtils.h:708 (discriminator 3))
#06: decltype (applyImpl({parm#1}, {parm#2}, (*this).mArguments, (mozilla::IndexSequence<>)())) nsRunnableMethodArguments<>::apply<nsJSChannel, void (nsJSChannel::*)()>(nsJSChannel*, void (nsJSChannel::*)()) (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/nsThreadUtils.h:715)
#07: nsRunnableMethodImpl<void (nsJSChannel::*)(), true, false>::Run() (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/nsThreadUtils.h:743)
#08: nsThread::ProcessNextEvent(bool, bool*) (/home/ckerschb/moz/mc/xpcom/threads/nsThread.cpp:992 (discriminator 1))
#09: NS_ProcessNextEvent(nsIThread*, bool) (/home/ckerschb/moz/mc/xpcom/glue/nsThreadUtils.cpp:290)
#10: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (/home/ckerschb/moz/mc/ipc/glue/MessagePump.cpp:98)
#11: MessageLoop::RunInternal() (/home/ckerschb/moz/mc/ipc/chromium/src/base/message_loop.cc:234)
#12: MessageLoop::RunHandler() (/home/ckerschb/moz/mc/ipc/chromium/src/base/message_loop.cc:227)
#13: MessageLoop::Run() (/home/ckerschb/moz/mc/ipc/chromium/src/base/message_loop.cc:206)
#14: nsBaseAppShell::Run() (/home/ckerschb/moz/mc/widget/nsBaseAppShell.cpp:158)
#15: nsAppStartup::Run() (/home/ckerschb/moz/mc/toolkit/components/startup/nsAppStartup.cpp:284)
#16: XREMain::XRE_mainRun() (/home/ckerschb/moz/mc/toolkit/xre/nsAppRunner.cpp:4368)
#17: XREMain::XRE_main(int, char**, nsXREAppData const*) (/home/ckerschb/moz/mc/toolkit/xre/nsAppRunner.cpp:4472)
#18: XRE_main (/home/ckerschb/moz/mc/toolkit/xre/nsAppRunner.cpp:4580)
#19: do_main (/home/ckerschb/moz/mc/browser/app/nsBrowserApp.cpp:220)
#20: main (/home/ckerschb/moz/mc/browser/app/nsBrowserApp.cpp:360)
#21: __libc_start_main (/build/eglibc-3GlaMS/eglibc-2.19/csu/libc-start.c:321)
#22: _start (/home/ckerschb/moz/mc-obj-ff-dbg/dist/bin/firefox)
(Assignee)

Comment 2

2 years ago
Problem is:

Assertion failure: false, at /home/ckerschb/moz/mc/dom/jsurl/nsJSProtocolHandler.cpp:932
#01: nsJSChannel::SetLoadInfo(nsILoadInfo*) (/home/ckerschb/moz/mc/dom/jsurl/nsJSProtocolHandler.cpp:932)
#02: nsJSProtocolHandler::NewChannel2(nsIURI*, nsILoadInfo*, nsIChannel**) (/home/ckerschb/moz/mc/dom/jsurl/nsJSProtocolHandler.cpp:1246)
#03: nsIOService::NewChannelFromURIWithProxyFlagsInternal(nsIURI*, nsIURI*, unsigned int, nsILoadInfo*, nsIChannel**) (/home/ckerschb/moz/mc/netwerk/base/nsIOService.cpp:795)
#04: nsIOService::NewChannelFromURIWithLoadInfo(nsIURI*, nsILoadInfo*, nsIChannel**) (/home/ckerschb/moz/mc/netwerk/base/nsIOService.cpp:719)
#05: NS_NewChannelInternal(nsIChannel**, nsIURI*, nsILoadInfo*, nsILoadGroup*, nsIInterfaceRequestor*, unsigned int, nsIIOService*) (/home/ckerschb/moz/mc/netwerk/base/nsNetUtilInlines.h:226)
#06: nsDocShell::DoURILoad(nsIURI*, nsIURI*, bool, nsIURI*, bool, unsigned int, nsISupports*, char const*, nsAString_internal const&, nsIInputStream*, nsIInputStream*, bool, nsIDocShell**, nsIRequest**, bool, bool, bool, nsAString_internal const&, nsIURI*, unsigned int) (/home/ckerschb/moz/mc/docshell/base/nsDocShell.cpp:10727)
#07: nsDocShell::InternalLoad(nsIURI*, nsIURI*, bool, nsIURI*, unsigned int, nsISupports*, unsigned int, char16_t const*, char const*, nsAString_internal const&, nsIInputStream*, nsIInputStream*, unsigned int, nsISHEntry*, bool, nsAString_internal const&, nsIDocShell*, nsIURI*, nsIDocShell**, nsIRequest**) (/home/ckerschb/moz/mc/docshell/base/nsDocShell.cpp:10466)
#08: nsDocShell::LoadURI(nsIURI*, nsIDocShellLoadInfo*, unsigned int, bool) (/home/ckerschb/moz/mc/docshell/base/nsDocShell.cpp:1561)
#09: nsLocation::SetURI(nsIURI*, bool) (/home/ckerschb/moz/mc/dom/base/nsLocation.cpp:273)
#10: nsLocation::SetHrefWithBase(nsAString_internal const&, nsIURI*, bool) (/home/ckerschb/moz/mc/dom/base/nsLocation.cpp:539 (discriminator 4))
#11: nsLocation::SetHrefWithContext(JSContext*, nsAString_internal const&, bool) (/home/ckerschb/moz/mc/dom/base/nsLocation.cpp:492)
#12: nsLocation::SetHref(nsAString_internal const&) (/home/ckerschb/moz/mc/dom/base/nsLocation.cpp:461)
#13: nsLocation::SetHref(nsAString_internal const&, mozilla::ErrorResult&) (/home/ckerschb/moz/mc/dom/base/nsLocation.h:76)
#14: set_href (/home/ckerschb/moz/mc-obj-ff-dbg/dom/bindings/LocationBinding.cpp:78)
#15: genericCrossOriginSetter (/home/ckerschb/moz/mc-obj-ff-dbg/dom/bindings/LocationBinding.cpp:825)
#16: js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (/home/ckerschb/moz/mc/js/src/jscntxtinlines.h:235)
#17: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:480)
#18: InternalCall (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:526)
#19: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:544)
#20: js::CallSetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::Handle<JS::Value>) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:669)
#21: js::SetPropertyIgnoringNamedGetter(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyDescriptor>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/proxy/BaseProxyHandler.cpp:245)
#22: mozilla::dom::DOMProxyHandler::set(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) const (/home/ckerschb/moz/mc/dom/bindings/DOMJSProxyHandler.cpp:218)
#23: js::Proxy::set(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/proxy/Proxy.cpp:332)
#24: js::proxy_SetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/proxy/Proxy.cpp:588)
#25: JSObject::nonNativeSetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/jsobj.cpp:1051)
#26: js::SetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/vm/NativeObject.h:1524)
#27: js::Wrapper::set(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) const (/home/ckerschb/moz/mc/js/src/proxy/Wrapper.cpp:150)
#28: js::CrossCompartmentWrapper::set(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) const (/home/ckerschb/moz/mc/js/src/proxy/CrossCompartmentWrapper.cpp:197 (discriminator 1))
#29: js::Proxy::set(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/proxy/Proxy.cpp:332)
#30: js::proxy_SetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/proxy/Proxy.cpp:588)
#31: JSObject::nonNativeSetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/jsobj.cpp:1051)
#32: js::SetProperty(JSContext*, JS::Handle<JSObject*>, JS::Handle<jsid>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::ObjectOpResult&) (/home/ckerschb/moz/mc/js/src/vm/NativeObject.h:1524)
#33: SetPropertyOperation (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:284)
#34: Interpret (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:2624)
#35: js::RunScript(JSContext*, js::RunState&) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:426)
#36: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:498)
#37: InternalCall (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:526)
#38: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:544)
#39: js::fun_apply(JSContext*, unsigned int, JS::Value*) (/home/ckerschb/moz/mc/js/src/jsfun.cpp:1261)
#40: js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (/home/ckerschb/moz/mc/js/src/jscntxtinlines.h:235)
#41: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:480)
#42: InternalCall (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:526)
#43: js::CallFromStack(JSContext*, JS::CallArgs const&) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:532)
#44: Interpret (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:2831)
#45: js::RunScript(JSContext*, js::RunState&) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:426)
#46: js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:498)
#47: InternalCall (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:526)
#48: js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) (/home/ckerschb/moz/mc/js/src/vm/Interpreter.cpp:544)
#49: JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) (/home/ckerschb/moz/mc/js/src/jsapi.cpp:2926)
#50: mozilla::dom::EventHandlerNonNull::Call(JSContext*, JS::Handle<JS::Value>, mozilla::dom::Event&, JS::MutableHandle<JS::Value>, mozilla::ErrorResult&) (/home/ckerschb/moz/mc-obj-ff-dbg/dom/bindings/EventHandlerBinding.cpp:260 (discriminator 1))
#51: void mozilla::dom::EventHandlerNonNull::Call<nsISupports*>(nsISupports* const&, mozilla::dom::Event&, JS::MutableHandle<JS::Value>, mozilla::ErrorResult&, char const*, mozilla::dom::CallbackObject::ExceptionHandling, JSCompartment*) (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/mozilla/dom/EventHandlerBinding.h:351)
#52: mozilla::JSEventHandler::HandleEvent(nsIDOMEvent*) (/home/ckerschb/moz/mc/dom/events/JSEventHandler.cpp:215)
#53: mozilla::EventListenerManager::HandleEventSubType(mozilla::EventListenerManager::Listener*, nsIDOMEvent*, mozilla::dom::EventTarget*) (/home/ckerschb/moz/mc/dom/events/EventListenerManager.cpp:1111)
#54: mozilla::EventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, nsIDOMEvent**, mozilla::dom::EventTarget*, nsEventStatus*) (/home/ckerschb/moz/mc/dom/events/EventListenerManager.cpp:1282)
#55: mozilla::EventListenerManager::HandleEvent(nsPresContext*, mozilla::WidgetEvent*, nsIDOMEvent**, mozilla::dom::EventTarget*, nsEventStatus*) (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/mozilla/EventListenerManager.h:352)
#56: mozilla::EventTargetChainItem::HandleEvent(mozilla::EventChainPostVisitor&, mozilla::ELMCreationDetector&) (/home/ckerschb/moz/mc/dom/events/EventDispatcher.cpp:278)
#57: mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem>&, mozilla::EventChainPostVisitor&, mozilla::EventDispatchingCallback*, mozilla::ELMCreationDetector&) (/home/ckerschb/moz/mc/dom/events/EventDispatcher.cpp:381)
#58: mozilla::EventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, nsIDOMEvent*, nsEventStatus*, mozilla::EventDispatchingCallback*, nsTArray<mozilla::dom::EventTarget*>*) (/home/ckerschb/moz/mc/dom/events/EventDispatcher.cpp:713)
#59: nsDocumentViewer::LoadComplete(nsresult) (/home/ckerschb/moz/mc/layout/base/nsDocumentViewer.cpp:1000)
#60: nsDocShell::EndPageLoad(nsIWebProgress*, nsIChannel*, nsresult) (/home/ckerschb/moz/mc/docshell/base/nsDocShell.cpp:7518)
#61: nsDocShell::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, nsresult) (/home/ckerschb/moz/mc/docshell/base/nsDocShell.cpp:7331)
#62: nsDocLoader::DoFireOnStateChange(nsIWebProgress*, nsIRequest*, int&, nsresult) (/home/ckerschb/moz/mc/uriloader/base/nsDocLoader.cpp:1250 (discriminator 1))
#63: nsDocLoader::doStopDocumentLoad(nsIRequest*, nsresult) (/home/ckerschb/moz/mc/uriloader/base/nsDocLoader.cpp:833 (discriminator 2))
#64: nsDocLoader::DocLoaderIsEmpty(bool) (/home/ckerschb/moz/mc/uriloader/base/nsDocLoader.cpp:726)
#65: nsDocLoader::ChildDoneWithOnload(nsIDocumentLoader*) (/home/ckerschb/moz/mc/uriloader/base/nsDocLoader.h:202)
#66: nsDocLoader::DocLoaderIsEmpty(bool) (/home/ckerschb/moz/mc/uriloader/base/nsDocLoader.cpp:714 (discriminator 2))
#67: nsDocLoader::OnStopRequest(nsIRequest*, nsISupports*, nsresult) (/home/ckerschb/moz/mc/uriloader/base/nsDocLoader.cpp:608 (discriminator 1))
#68: nsLoadGroup::RemoveRequest(nsIRequest*, nsISupports*, nsresult) (/home/ckerschb/moz/mc/netwerk/base/nsLoadGroup.cpp:633)
#69: nsDocument::DoUnblockOnload() (/home/ckerschb/moz/mc/dom/base/nsDocument.cpp:9193 (discriminator 1))
#70: nsDocument::UnblockOnload(bool) (/home/ckerschb/moz/mc/dom/base/nsDocument.cpp:9120)
#71: nsDocument::DispatchContentLoadedEvents() (/home/ckerschb/moz/mc/dom/base/nsDocument.cpp:5202)
#72: decltype (((*{parm#1}).*{parm#2})()) nsRunnableMethodArguments<>::applyImpl<nsDocument, void (nsDocument::*)()>(nsDocument*, void (nsDocument::*)(), mozilla::Tuple<>&, mozilla::IndexSequence<>) (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/nsThreadUtils.h:708 (discriminator 3))
#73: decltype (applyImpl({parm#1}, {parm#2}, (*this).mArguments, (mozilla::IndexSequence<>)())) nsRunnableMethodArguments<>::apply<nsDocument, void (nsDocument::*)()>(nsDocument*, void (nsDocument::*)()) (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/nsThreadUtils.h:715)
#74: nsRunnableMethodImpl<void (nsDocument::*)(), true, false>::Run() (/home/ckerschb/moz/mc-obj-ff-dbg/dist/include/nsThreadUtils.h:743)
#75: nsThread::ProcessNextEvent(bool, bool*) (/home/ckerschb/moz/mc/xpcom/threads/nsThread.cpp:992 (discriminator 1))
#76: NS_ProcessNextEvent(nsIThread*, bool) (/home/ckerschb/moz/mc/xpcom/glue/nsThreadUtils.cpp:290)
#77: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (/home/ckerschb/moz/mc/ipc/glue/MessagePump.cpp:98)
#78: MessageLoop::RunInternal() (/home/ckerschb/moz/mc/ipc/chromium/src/base/message_loop.cc:234)
#79: MessageLoop::RunHandler() (/home/ckerschb/moz/mc/ipc/chromium/src/base/message_loop.cc:227)
#80: MessageLoop::Run() (/home/ckerschb/moz/mc/ipc/chromium/src/base/message_loop.cc:206)
#81: nsBaseAppShell::Run() (/home/ckerschb/moz/mc/widget/nsBaseAppShell.cpp:158)
#82: nsAppStartup::Run() (/home/ckerschb/moz/mc/toolkit/components/startup/nsAppStartup.cpp:284)
#83: XREMain::XRE_mainRun() (/home/ckerschb/moz/mc/toolkit/xre/nsAppRunner.cpp:4368)
#84: XREMain::XRE_main(int, char**, nsXREAppData const*) (/home/ckerschb/moz/mc/toolkit/xre/nsAppRunner.cpp:4472)
#85: XRE_main (/home/ckerschb/moz/mc/toolkit/xre/nsAppRunner.cpp:4580)
#86: do_main (/home/ckerschb/moz/mc/browser/app/nsBrowserApp.cpp:220)
#87: main (/home/ckerschb/moz/mc/browser/app/nsBrowserApp.cpp:360)
#88: __libc_start_main (/build/eglibc-3GlaMS/eglibc-2.19/csu/libc-start.c:321)
(Assignee)

Comment 3

2 years ago
So we actually can't convert nsJSProtocolHandler to use asyncOpen2() before we have converted docshell to set the right loadInfo args.
(Assignee)

Updated

2 years ago
Status: ASSIGNED → RESOLVED
Last Resolved: 2 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 1182569
You need to log in before you can comment on or make changes to this bug.