зеркало из https://github.com/mozilla/pjs.git
Bug 394525 - "malware check non-http URIs" (treat Suspend() failures as nonfatal) [p=dcamp r=bzbarsky sr=biesi a=blocking1.9+]
This commit is contained in:
Родитель
79b4834c99
Коммит
c706a7c8e3
|
@ -9201,12 +9201,25 @@ nsClassifierCallback::Run()
|
|||
nsresult rv = channel->GetURI(getter_AddRefs(uri));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// XXX: we need to audit other channels to make sure they can handle
|
||||
// being suspended directly after AsyncOpen()
|
||||
nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(channel);
|
||||
if (!httpChannel) {
|
||||
return NS_OK;
|
||||
}
|
||||
// Don't bother checking certain types of URIs.
|
||||
PRBool hasFlags;
|
||||
rv = NS_URIChainHasFlags(uri,
|
||||
nsIProtocolHandler::URI_DANGEROUS_TO_LOAD,
|
||||
&hasFlags);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (hasFlags) return NS_OK;
|
||||
|
||||
rv = NS_URIChainHasFlags(uri,
|
||||
nsIProtocolHandler::URI_IS_LOCAL_FILE,
|
||||
&hasFlags);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (hasFlags) return NS_OK;
|
||||
|
||||
rv = NS_URIChainHasFlags(uri,
|
||||
nsIProtocolHandler::URI_IS_UI_RESOURCE,
|
||||
&hasFlags);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (hasFlags) return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIURIClassifier> uriClassifier =
|
||||
do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID, &rv);
|
||||
|
@ -9220,7 +9233,13 @@ nsClassifierCallback::Run()
|
|||
// Suspend the channel, it will be resumed when we get the classifier
|
||||
// callback.
|
||||
rv = channel->Suspend();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (NS_FAILED(rv)) {
|
||||
// Some channels (including nsJSChannel) fail on Suspend. This
|
||||
// shouldn't be fatal, but will prevent malware from being
|
||||
// blocked on these channels.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
mSuspendedChannel = channel;
|
||||
#ifdef DEBUG
|
||||
PR_LOG(gDocShellLog, PR_LOG_DEBUG,
|
||||
|
|
Загрузка…
Ссылка в новой задаче