From 85cb1171ff4899c3c615e2159ed0b7b930e7dbfb Mon Sep 17 00:00:00 2001 From: "jst%mozilla.org" Date: Fri, 21 Mar 2008 06:01:55 +0000 Subject: [PATCH] Fixing orange from bug 402983. Make file:///foo and file:////foo#bar compare as equal URLs. r+sr=bzbarsky@mit.edu git-svn-id: svn://10.0.0.236/trunk@248344 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/caps/src/nsScriptSecurityManager.cpp | 22 ++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/mozilla/caps/src/nsScriptSecurityManager.cpp b/mozilla/caps/src/nsScriptSecurityManager.cpp index 9acdf6c793b..b0d16759a14 100644 --- a/mozilla/caps/src/nsScriptSecurityManager.cpp +++ b/mozilla/caps/src/nsScriptSecurityManager.cpp @@ -319,10 +319,24 @@ nsScriptSecurityManager::SecurityCompareURIs(nsIURI* aSourceURI, if (!sStrictFileOriginPolicy) return PR_TRUE; - // Otherwise they had better match - PRBool filesAreEqual = PR_FALSE; - nsresult rv = sourceBaseURI->Equals(targetBaseURI, &filesAreEqual); - return NS_SUCCEEDED(rv) && filesAreEqual; + nsCOMPtr sourceFileURL(do_QueryInterface(sourceBaseURI)); + nsCOMPtr targetFileURL(do_QueryInterface(targetBaseURI)); + + if (!sourceFileURL || !targetFileURL) + return PR_FALSE; + + nsCOMPtr sourceFile, targetFile; + + sourceFileURL->GetFile(getter_AddRefs(sourceFile)); + targetFileURL->GetFile(getter_AddRefs(targetFile)); + + if (!sourceFile || !targetFile) + return PR_FALSE; + + // Otherwise they had better match + PRBool filesAreEqual = PR_FALSE; + nsresult rv = sourceFile->Equals(targetFile, &filesAreEqual); + return NS_SUCCEEDED(rv) && filesAreEqual; } // Special handling for mailnews schemes