diff options
Diffstat (limited to 'browser/extensions/aushelper/bootstrap.js')
-rw-r--r-- | browser/extensions/aushelper/bootstrap.js | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/browser/extensions/aushelper/bootstrap.js b/browser/extensions/aushelper/bootstrap.js deleted file mode 100644 index f57f621e1..000000000 --- a/browser/extensions/aushelper/bootstrap.js +++ /dev/null @@ -1,189 +0,0 @@ -/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const {classes: Cc, interfaces: Ci, utils: Cu} = Components; - -const APP_UPDATE_URL_PREF = "app.update.url"; -const REPLACE_KEY = "%OS_VERSION%"; - -const AUSHELPER_CPU_RESULT_CODE_HISTOGRAM_ID = "AUSHELPER_CPU_RESULT_CODE"; -// The system is not vulnerable to Bug 1296630. -const CPU_NO_BUG1296630 = 1; -// The system is vulnerable to Bug 1296630. -const CPU_YES_BUG1296630 = 2; -// An error occured when checking if the system is vulnerable to Bug 1296630. -const CPU_ERR_BUG1296630 = 3; -// It is unknown whether the system is vulnerable to Bug 1296630 (should never happen). -const CPU_UNKNOWN_BUG1296630 = 4; - -const AUSHELPER_CPU_ERROR_CODE_HISTOGRAM_ID = "AUSHELPER_CPU_ERROR_CODE"; -const CPU_SUCCESS = 0; -const CPU_REG_OPEN_ERROR = 1; -const CPU_VENDOR_ID_ERROR = 2; -const CPU_ID_ERROR = 4; -const CPU_REV_ERROR = 8; - -const AUSHELPER_WEBSENSE_REG_VERSION_SCALAR_NAME = "aushelper.websense_reg_version"; -const AUSHELPER_WEBSENSE_REG_EXISTS_HISTOGRAM_ID = "AUSHELPER_WEBSENSE_REG_EXISTS"; - -const AUSHELPER_WEBSENSE_ERROR_CODE_HISTOGRAM_ID = "AUSHELPER_WEBSENSE_ERROR_CODE"; -const WEBSENSE_SUCCESS = 0; -const WEBSENSE_REG_OPEN_ERROR = 1; -const WEBSENSE_REG_READ_ERROR = 2; -const WEBSENSE_ALREADY_MODIFIED = 4; - -Cu.import("resource://gre/modules/Services.jsm"); - -function startup() { - if (Services.appinfo.OS != "WINNT") { - return; - } - - const regCPUPath = "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"; - let wrk; - let cpuErrorCode = CPU_SUCCESS; - try { - wrk = Cc["@mozilla.org/windows-registry-key;1"].createInstance(Ci.nsIWindowsRegKey); - wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, regCPUPath, wrk.ACCESS_READ); - } catch (e) { - Cu.reportError("AUSHelper - unable to open registry. Exception: " + e); - cpuErrorCode |= CPU_REG_OPEN_ERROR; - } - - // If any of the following values are successfully retrieved and they don't - // match the condition for that value then it is safe to update. Hence why the - // following checks are somewhat convoluted. The possible values for the - // variable set by each check is as follows: - // - // | Match | No Match | Error | - // variable | true | false | null | - - let cpuVendorIDMatch = false; - try { - let cpuVendorID = wrk.readStringValue("VendorIdentifier"); - if (cpuVendorID.toLowerCase() == "genuineintel") { - cpuVendorIDMatch = true; - } - } catch (e) { - Cu.reportError("AUSHelper - error getting CPU vendor indentifier. Exception: " + e); - cpuVendorIDMatch = null; - cpuErrorCode |= CPU_VENDOR_ID_ERROR; - } - - let cpuIDMatch = false; - try { - let cpuID = wrk.readStringValue("Identifier"); - if (cpuID.toLowerCase().indexOf("family 6 model 61 stepping 4") != -1) { - cpuIDMatch = true; - } - } catch (e) { - Cu.reportError("AUSHelper - error getting CPU indentifier. Exception: " + e); - cpuIDMatch = null; - cpuErrorCode |= CPU_ID_ERROR; - } - - let microCodeVersions = [0xe, 0x11, 0x12, 0x13, 0x16, 0x18, 0x19]; - let cpuRevMatch = null; - try { - let keyNames = ["Update Revision", "Update Signature"]; - for (let i = 0; i < keyNames.length; ++i) { - try { - let regVal = wrk.readBinaryValue(keyNames[i]); - if (regVal.length == 8) { - let hexVal = []; - // We are only inyterested in the upper 4 bytes and the little endian - // value for it. - for (let j = 4; j < 8; j++) { - let c = regVal.charCodeAt(j).toString(16); - if (c.length == 1) { - c = "0" + c; - } - hexVal.unshift(c); - } - cpuRevMatch = false; - if (microCodeVersions.indexOf(parseInt(hexVal.join(''))) != -1) { - cpuRevMatch = true; - } - break; - } - } catch (e) { - if (i == keyNames.length - 1) { - // The registry key name's value was not successfully queried. - cpuRevMatch = null; - cpuErrorCode |= CPU_REV_ERROR; - } - } - } - wrk.close(); - } catch (ex) { - Cu.reportError("AUSHelper - error getting CPU revision. Exception: " + ex); - cpuRevMatch = null; - cpuErrorCode |= CPU_REV_ERROR; - } - - let cpuResult = CPU_UNKNOWN_BUG1296630; - let cpuValue = "(unkBug1296630v1)"; - // The following uses strict equality checks since the values can be true, - // false, or null. - if (cpuVendorIDMatch === false || cpuIDMatch === false || cpuRevMatch === false) { - // Since one of the values is false then the system won't be affected by - // bug 1296630 according to the conditions set out in bug 1311515. - cpuValue = "(noBug1296630v1)"; - cpuResult = CPU_NO_BUG1296630; - } else if (cpuVendorIDMatch === null || cpuIDMatch === null || cpuRevMatch === null) { - // Since one of the values is null we can't say for sure if the system will - // be affected by bug 1296630. - cpuValue = "(errBug1296630v1)"; - cpuResult = CPU_ERR_BUG1296630; - } else if (cpuVendorIDMatch === true && cpuIDMatch === true && cpuRevMatch === true) { - // Since all of the values are true we can say that the system will be - // affected by bug 1296630. - cpuValue = "(yesBug1296630v1)"; - cpuResult = CPU_YES_BUG1296630; - } - - Services.telemetry.getHistogramById(AUSHELPER_CPU_RESULT_CODE_HISTOGRAM_ID).add(cpuResult); - Services.telemetry.getHistogramById(AUSHELPER_CPU_ERROR_CODE_HISTOGRAM_ID).add(cpuErrorCode); - - const regWebsensePath = "Websense\\Agent"; - let websenseErrorCode = WEBSENSE_SUCCESS; - let websenseVersion = ""; - try { - let regModes = [wrk.ACCESS_READ, wrk.ACCESS_READ | wrk.WOW64_64]; - for (let i = 0; i < regModes.length; ++i) { - wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE, "SOFTWARE", regModes[i]); - try { - if (wrk.hasChild(regWebsensePath)) { - let childKey = wrk.openChild(regWebsensePath, wrk.ACCESS_READ); - websenseVersion = childKey.readStringValue("InstallVersion"); - Services.telemetry.scalarSet(AUSHELPER_WEBSENSE_REG_VERSION_SCALAR_NAME, websenseVersion); - } - wrk.close(); - } catch (e) { - Cu.reportError("AUSHelper - unable to read registry. Exception: " + e); - websenseErrorCode |= WEBSENSE_REG_READ_ERROR; - } - } - } catch (ex) { - Cu.reportError("AUSHelper - unable to open registry. Exception: " + ex); - websenseErrorCode |= WEBSENSE_REG_OPEN_ERROR; - } - - Services.telemetry.getHistogramById(AUSHELPER_WEBSENSE_REG_EXISTS_HISTOGRAM_ID).add(!!websenseVersion); - let websenseValue = "(" + (websenseVersion ? "websense-" + websenseVersion : "nowebsense") + ")"; - - let branch = Services.prefs.getDefaultBranch(""); - let curValue = branch.getCharPref(APP_UPDATE_URL_PREF); - if (curValue.indexOf(REPLACE_KEY + "/") > -1) { - let newValue = curValue.replace(REPLACE_KEY + "/", REPLACE_KEY + cpuValue + websenseValue + "/"); - branch.setCharPref(APP_UPDATE_URL_PREF, newValue); - } else { - websenseErrorCode |= WEBSENSE_ALREADY_MODIFIED; - } - Services.telemetry.getHistogramById(AUSHELPER_WEBSENSE_ERROR_CODE_HISTOGRAM_ID).add(websenseErrorCode); -} -function shutdown() {} -function install() {} -function uninstall() {} |