Bug 813897 - Fix crash in URL Classifier when using a system principal. r=bsmith,dcamp

This commit is contained in:
Mounir Lamouri 2013-03-05 10:39:37 +01:00
Родитель 8f66c676bd
Коммит ff82c04802
3 изменённых файлов: 41 добавлений и 0 удалений

Просмотреть файл

@ -42,6 +42,7 @@
#include "nsIPrincipal.h"
#include "Classifier.h"
#include "ProtocolParser.h"
#include "nsContentUtils.h"
using namespace mozilla;
using namespace mozilla::safebrowsing;
@ -1237,9 +1238,15 @@ nsUrlClassifierDBService::LookupURI(nsIPrincipal* aPrincipal,
NS_ENSURE_TRUE(gDbBackgroundThread, NS_ERROR_NOT_INITIALIZED);
NS_ENSURE_ARG(aPrincipal);
if (nsContentUtils::IsSystemPrincipal(aPrincipal)) {
*didLookup = false;
return NS_OK;
}
nsCOMPtr<nsIURI> uri;
nsresult rv = aPrincipal->GetURI(getter_AddRefs(uri));
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(uri, NS_ERROR_FAILURE);
uri = NS_GetInnermostURI(uri);
NS_ENSURE_TRUE(uri, NS_ERROR_FAILURE);

Просмотреть файл

@ -25,4 +25,9 @@ MOCHITEST_FILES = \
import.css \
$(NULL)
MOCHITEST_CHROME_FILES = \
test_lookup_system_principal.html \
$(NULL)
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -0,0 +1,29 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test that lookup() on a system principal doesn't crash</title>
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
</head>
<body>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="text/javascript">
var Cc = Components.classes;
var Ci = Components.interfaces;
var dbService = Cc["@mozilla.org/url-classifier/dbservice;1"]
.getService(Ci.nsIUrlClassifierDBService);
dbService.lookup(document.nodePrincipal, function(arg) {});
ok(true, "lookup() didn't crash");
</script>
</pre>
</body>
</html>