Bug 378685 - Permission manager should operate on innermost URI, r=dveditz sr=mconnor
--- a/extensions/cookie/nsPermissionManager.cpp
+++ b/extensions/cookie/nsPermissionManager.cpp
@@ -987,22 +987,25 @@ nsPermissionManager::Write()
mChangedList = PR_FALSE;
return NS_OK;
}
nsresult
nsPermissionManager::GetHost(nsIURI *aURI, nsACString &aResult)
{
- aURI->GetHost(aResult);
+ nsCOMPtr<nsIURI> innerURI = NS_GetInnermostURI(aURI);
+ if (!innerURI) return NS_ERROR_FAILURE;
+
+ innerURI->GetHost(aResult);
// If there is no host, use the scheme, and prepend "scheme:",
// to make sure it isn't a host or something.
if (aResult.IsEmpty()) {
- aURI->GetScheme(aResult);
+ innerURI->GetScheme(aResult);
if (aResult.IsEmpty()) {
// still empty. Return error.
return NS_ERROR_FAILURE;
}
aResult = NS_LITERAL_CSTRING("scheme:") + aResult;
}
return NS_OK;