From 4501f646c7171394005727af423c12096a356bfc Mon Sep 17 00:00:00 2001 From: Gian-Carlo Pascutto Date: Sat, 30 Jul 2011 09:24:22 +0200 Subject: [PATCH] Bug 667075 - Use nsIRandomGenerator instead of querying SQLite. r=dcamp --- .../nsUrlClassifierDBService.cpp | 39 +++++-------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp index 8d1d7bb362bc..771c07d643e3 100644 --- a/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp +++ b/toolkit/components/url-classifier/nsUrlClassifierDBService.cpp @@ -62,6 +62,7 @@ #include "nsIProxyObjectManager.h" #include "nsToolkitCompsCID.h" #include "nsIUrlClassifierUtils.h" +#include "nsIRandomGenerator.h" #include "nsUrlClassifierDBService.h" #include "nsUrlClassifierUtils.h" #include "nsURILoader.h" @@ -480,10 +481,6 @@ public: PRBool before, nsTArray &entries); - // Ask the db for a random number. This is temporary, and should be - // replaced with nsIRandomGenerator when 419739 is fixed. - nsresult RandomNumber(PRInt64 *randomNum); - protected: nsresult ReadEntries(mozIStorageStatement *statement, nsTArray& entries); @@ -501,8 +498,6 @@ protected: nsCOMPtr mPartialEntriesAfterStatement; nsCOMPtr mLastPartialEntriesStatement; nsCOMPtr mPartialEntriesBeforeStatement; - - nsCOMPtr mRandomStatement; }; nsresult @@ -559,11 +554,6 @@ nsUrlClassifierStore::Init(nsUrlClassifierDBServiceWorker *worker, getter_AddRefs(mPartialEntriesBeforeStatement)); NS_ENSURE_SUCCESS(rv, rv); - rv = mConnection->CreateStatement - (NS_LITERAL_CSTRING("SELECT abs(random())"), - getter_AddRefs(mRandomStatement)); - NS_ENSURE_SUCCESS(rv, rv); - return NS_OK; } @@ -581,7 +571,6 @@ nsUrlClassifierStore::Close() mPartialEntriesAfterStatement = nsnull; mPartialEntriesBeforeStatement = nsnull; mLastPartialEntriesStatement = nsnull; - mRandomStatement = nsnull; mConnection = nsnull; } @@ -764,21 +753,6 @@ nsUrlClassifierStore::ReadNoiseEntries(PRInt64 rowID, return ReadEntries(wraparoundStatement, entries); } -nsresult -nsUrlClassifierStore::RandomNumber(PRInt64 *randomNum) -{ - mozStorageStatementScoper randScoper(mRandomStatement); - PRBool exists; - nsresult rv = mRandomStatement->ExecuteStep(&exists); - NS_ENSURE_SUCCESS(rv, rv); - if (!exists) - return NS_ERROR_NOT_AVAILABLE; - - *randomNum = mRandomStatement->AsInt64(0); - - return NS_OK; -} - // ------------------------------------------------------------------------- // nsUrlClassifierAddStore class implementation @@ -1752,9 +1726,16 @@ nsUrlClassifierDBServiceWorker::AddNoise(PRInt64 nearID, return NS_OK; } - PRInt64 randomNum; - nsresult rv = mMainStore.RandomNumber(&randomNum); + nsCOMPtr rg = + do_GetService("@mozilla.org/security/random-generator;1"); + NS_ENSURE_STATE(rg); + + PRInt32 randomNum; + PRUint8 *temp; + nsresult rv = rg->GenerateRandomBytes(sizeof(randomNum), &temp); NS_ENSURE_SUCCESS(rv, rv); + memcpy(&randomNum, temp, sizeof(randomNum)); + NS_Free(temp); PRInt32 numBefore = randomNum % count;