зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1029148 - store current search engine configuration outside of prefs - add a disclaimer in the salt, r=gavin.
This commit is contained in:
Родитель
ed17f38980
Коммит
3c6fe6df80
|
@ -3800,14 +3800,22 @@ SearchService.prototype = {
|
||||||
},
|
},
|
||||||
|
|
||||||
_getVerificationHash: function SRCH_SVC__getVerificationHash(aName) {
|
_getVerificationHash: function SRCH_SVC__getVerificationHash(aName) {
|
||||||
let str = OS.Path.basename(OS.Constants.Path.profileDir) + aName;
|
let disclaimer = "By modifying this file, I agree that I am doing so " +
|
||||||
|
"only within $appName itself, using official, user-driven search " +
|
||||||
|
"engine selection processes, and in a way which does not circumvent " +
|
||||||
|
"user consent. I acknowledge that any attempt to change this file " +
|
||||||
|
"from outside of $appName is a malicious act, and will be responded " +
|
||||||
|
"to accordingly."
|
||||||
|
|
||||||
|
let salt = OS.Path.basename(OS.Constants.Path.profileDir) + aName +
|
||||||
|
disclaimer.replace(/\$appName/g, Services.appinfo.name);
|
||||||
|
|
||||||
let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
|
let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
|
||||||
.createInstance(Ci.nsIScriptableUnicodeConverter);
|
.createInstance(Ci.nsIScriptableUnicodeConverter);
|
||||||
converter.charset = "UTF-8";
|
converter.charset = "UTF-8";
|
||||||
|
|
||||||
// Data is an array of bytes.
|
// Data is an array of bytes.
|
||||||
let data = converter.convertToByteArray(str, {});
|
let data = converter.convertToByteArray(salt, {});
|
||||||
let hasher = Cc["@mozilla.org/security/hash;1"]
|
let hasher = Cc["@mozilla.org/security/hash;1"]
|
||||||
.createInstance(Ci.nsICryptoHash);
|
.createInstance(Ci.nsICryptoHash);
|
||||||
hasher.init(hasher.SHA256);
|
hasher.init(hasher.SHA256);
|
||||||
|
|
|
@ -21,6 +21,37 @@ const MODE_WRONLY = FileUtils.MODE_WRONLY;
|
||||||
const MODE_CREATE = FileUtils.MODE_CREATE;
|
const MODE_CREATE = FileUtils.MODE_CREATE;
|
||||||
const MODE_TRUNCATE = FileUtils.MODE_TRUNCATE;
|
const MODE_TRUNCATE = FileUtils.MODE_TRUNCATE;
|
||||||
|
|
||||||
|
// nsSearchService.js uses Services.appinfo.name to build a salt for a hash.
|
||||||
|
var XULAppInfo = {
|
||||||
|
vendor: "Mozilla",
|
||||||
|
name: "XPCShell",
|
||||||
|
ID: "xpcshell@test.mozilla.org",
|
||||||
|
version: "5",
|
||||||
|
appBuildID: "2007010101",
|
||||||
|
platformVersion: "1.9",
|
||||||
|
platformBuildID: "2007010101",
|
||||||
|
inSafeMode: false,
|
||||||
|
logConsoleErrors: true,
|
||||||
|
OS: "XPCShell",
|
||||||
|
XPCOMABI: "noarch-spidermonkey",
|
||||||
|
|
||||||
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULAppInfo, Ci.nsIXULRuntime,
|
||||||
|
Ci.nsISupports])
|
||||||
|
};
|
||||||
|
|
||||||
|
var XULAppInfoFactory = {
|
||||||
|
createInstance: function (outer, iid) {
|
||||||
|
if (outer != null)
|
||||||
|
throw Cr.NS_ERROR_NO_AGGREGATION;
|
||||||
|
return XULAppInfo.QueryInterface(iid);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Components.manager.QueryInterface(Ci.nsIComponentRegistrar)
|
||||||
|
.registerFactory(Components.ID("{ecff8849-cee8-40a7-bd4a-3f4fdfeddb5c}"),
|
||||||
|
"XULAppInfo", "@mozilla.org/xre/app-info;1",
|
||||||
|
XULAppInfoFactory);
|
||||||
|
|
||||||
// Need to create and register a profile folder.
|
// Need to create and register a profile folder.
|
||||||
var gProfD = do_get_profile();
|
var gProfD = do_get_profile();
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче