AMT Manager crash fixes.
Ylian Saint-Hilaire committed
Oct 23, 2020 at 09:45 UTC
46f1cad3be9151f1ef5f3e163d694ab6321e211f
1 file changed
+30
-18
amtmanager.js
+30
-18
@@ -504,8 +504,10 @@ module.exports.CreateAmtManager = function (parent) {
504
dev.state = 1;
505
if (dev.aquired == null) { dev.aquired = {}; }
506
dev.aquired.controlMode = responses['IPS_HostBasedSetupService'].response.CurrentControlMode; // 1 = CCM, 2 = ACM
507
- var verSplit = stack.wsman.comm.amtVersion.split('.');
508
- if (verSplit.length >= 3) { dev.aquired.version = verSplit[0] + '.' + verSplit[1] + '.' + verSplit[2]; dev.aquired.majorver = parseInt(verSplit[0]); dev.aquired.minorver = parseInt(verSplit[1]); }
507
+ if (typeof stack.wsman.comm.amtVersion == 'string') { // Set the Intel AMT version using the HTTP header if present
508
+ var verSplit = stack.wsman.comm.amtVersion.split('.');
509
+ if (verSplit.length >= 3) { dev.aquired.version = verSplit[0] + '.' + verSplit[1] + '.' + verSplit[2]; dev.aquired.majorver = parseInt(verSplit[0]); dev.aquired.minorver = parseInt(verSplit[1]); }
510
+ }
511
dev.aquired.realm = stack.wsman.comm.digestRealm;
512
dev.aquired.user = dev.intelamt.user = stack.wsman.comm.user;
513
dev.aquired.pass = dev.intelamt.pass = stack.wsman.comm.pass;
@@ -690,7 +692,7 @@ module.exports.CreateAmtManager = function (parent) {
692
693
if ((status != 200) || (responses['CIM_ServiceAvailableToElement'] == null) || (responses['CIM_ServiceAvailableToElement'].responses == null) || (responses['CIM_ServiceAvailableToElement'].responses.length < 1)) return; // If the polling fails, just skip it.
694
var powerstate = responses['CIM_ServiceAvailableToElement'].responses[0].PowerState;
693
- if ((powerstate == 2) && (dev.aquired.majorver > 9)) {
695
+ if ((powerstate == 2) && (dev.aquired.majorver != null) && (dev.aquired.majorver > 9)) {
696
// Device is powered on and Intel AMT 10+, poll the OS power state.
697
dev.amtstack.Get('IPS_PowerManagementService', function (stack, name, response, status) {
698
const dev = stack.dev;
@@ -1100,13 +1102,13 @@ module.exports.CreateAmtManager = function (parent) {
1102
dev.taskCount = 1;
1103
dev.taskCompleted = func;
1104
var requests = ['*AMT_EnvironmentDetectionSettingData', 'AMT_ManagementPresenceRemoteSAP', 'AMT_RemoteAccessCredentialContext', 'AMT_RemoteAccessPolicyAppliesToMPS', 'AMT_RemoteAccessPolicyRule', '*AMT_UserInitiatedConnectionService', 'AMT_MPSUsernamePassword'];
1103
- if (dev.aquired.majorver > 11) { requests.push('*IPS_HTTPProxyService', 'IPS_HTTPProxyAccessPoint'); }
1105
+ if ((dev.aquired.majorver != null) && (dev.aquired.majorver > 11)) { requests.push('*IPS_HTTPProxyService', 'IPS_HTTPProxyAccessPoint'); }
1106
dev.amtstack.BatchEnum(null, requests, function (stack, name, responses, status) {
1107
const dev = stack.dev;
1108
if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request.
1109
//dev.consoleMsg("Added server root certificate.");
1110
1109
- if ((dev.aquired.majorver > 11) && (status == 400)) {
1111
+ if ((dev.aquired.majorver != null) && (dev.aquired.majorver > 11) && (status == 400)) {
1112
// Check if only the HTTP proxy objects failed
1113
status = 200;
1114
if (responses['IPS_HTTPProxyAccessPoint'].status == 400) { delete responses['IPS_HTTPProxyAccessPoint']; }
@@ -1206,7 +1208,7 @@ module.exports.CreateAmtManager = function (parent) {
1208
1209
function addMpsPolicy(dev) {
1210
if (dev.cira.mpsPolicy == false) {
1209
- var cilaSupport = ((dev.aquired.majorver > 11) || ((dev.aquired.majorver == 11) && (dev.aquired.minorver >= 6)));
1211
+ var cilaSupport = ((dev.aquired.majorver != null) && (dev.aquired.minorver != null)) && ((dev.aquired.majorver > 11) || ((dev.aquired.majorver == 11) && (dev.aquired.minorver >= 6)));
1212
var trigger = 2; // 1 = Alert, 2 = Periodic
1213
1214
// Setup extended data
@@ -1297,7 +1299,7 @@ module.exports.CreateAmtManager = function (parent) {
1299
1300
// Query the things we are going to be checking
1301
var query = ['*AMT_GeneralSettings', '*AMT_RedirectionService'];
1300
- if (dev.aquired.majorver > 5) { query.push('*CIM_KVMRedirectionSAP', '*IPS_OptInService'); }
1302
+ if ((dev.aquired.majorver != null) && (dev.aquired.majorver > 5)) { query.push('*CIM_KVMRedirectionSAP', '*IPS_OptInService'); }
1303
dev.amtstack.BatchEnum('', query, attemptSettingsSyncResponse);
1304
}
1305
@@ -1342,7 +1344,7 @@ module.exports.CreateAmtManager = function (parent) {
1344
}
1345
1346
// Check KVM state
1345
- if ((dev.aquired.majorver > 5) && (responses['CIM_KVMRedirectionSAP'] != null)) {
1347
+ if ((dev.aquired.majorver != null) && (dev.aquired.majorver > 5) && (responses['CIM_KVMRedirectionSAP'] != null)) {
1348
var kvm = (((responses['CIM_KVMRedirectionSAP'].response['EnabledState'] == 6) && (responses['CIM_KVMRedirectionSAP'].response['RequestedState'] == 2)) || (responses['CIM_KVMRedirectionSAP'].response['EnabledState'] == 2) || (responses['CIM_KVMRedirectionSAP'].response['EnabledState'] == 6));
1349
if (kvm == false) {
1350
// Enable KVM
@@ -1500,7 +1502,8 @@ module.exports.CreateAmtManager = function (parent) {
1502
var m2 = {}, m = hw.PhysicalMemory[i];
1503
m2.BankLabel = m.BankLabel;
1504
m2.Capacity = m.Capacity;
1503
- if (m.PartNumber) { m2.PartNumber = m.PartNumber.trim(); }
1505
+ if (typeof m.PartNumber == 'string') { m2.PartNumber = m.PartNumber.trim(); }
1506
+ if (typeof m.PartNumber == 'number') { m2.PartNumber = m.PartNumber; }
1507
if (typeof m.SerialNumber == 'string') { m2.SerialNumber = m.SerialNumber.trim(); }
1508
if (typeof m.SerialNumber == 'number') { m2.SerialNumber = m.SerialNumber; }
1509
if (typeof m.Manufacturer == 'string') { m2.Manufacturer = m.Manufacturer.trim(); }
@@ -1520,15 +1523,20 @@ module.exports.CreateAmtManager = function (parent) {
1523
hw2.hardware.identifiers.storage_devices = drives;
1524
}
1525
if (hw.Bios != null) {
1523
- if (hw.Bios.Manufacturer) { hw2.hardware.identifiers.bios_vendor = hw.Bios.Manufacturer.trim(); }
1526
+ if (typeof hw.Bios.Manufacturer == 'string') { hw2.hardware.identifiers.bios_vendor = hw.Bios.Manufacturer.trim(); }
1527
+ if (typeof hw.Bios.Manufacturer == 'number') { hw2.hardware.identifiers.bios_vendor = hw.Bios.Manufacturer; }
1528
hw2.hardware.identifiers.bios_version = hw.Bios.Version;
1529
if (hw.Bios.ReleaseDate && hw.Bios.ReleaseDate.Datetime) { hw2.hardware.identifiers.bios_date = hw.Bios.ReleaseDate.Datetime; }
1530
}
1531
if (hw.PhysicalPackage != null) {
1528
- if (hw.Card.Model) { hw2.hardware.identifiers.board_name = hw.Card.Model.trim(); }
1529
- if (hw.Card.Manufacturer) { hw2.hardware.identifiers.board_vendor = hw.Card.Manufacturer.trim(); }
1530
- if (hw.Card.Version) { hw2.hardware.identifiers.board_version = hw.Card.Version.trim(); }
1531
- if (hw.Card.SerialNumber) { hw2.hardware.identifiers.board_serial = hw.Card.SerialNumber.trim(); }
1532
+ if (typeof hw.Card.Model == 'string') { hw2.hardware.identifiers.board_name = hw.Card.Model.trim(); }
1533
+ if (typeof hw.Card.Model == 'number') { hw2.hardware.identifiers.board_name = hw.Card.Model; }
1534
+ if (typeof hw.Card.Manufacturer == 'string') { hw2.hardware.identifiers.board_vendor = hw.Card.Manufacturer.trim(); }
1535
+ if (typeof hw.Card.Manufacturer == 'number') { hw2.hardware.identifiers.board_vendor = hw.Card.Manufacturer; }
1536
+ if (typeof hw.Card.Version == 'string') { hw2.hardware.identifiers.board_version = hw.Card.Version.trim(); }
1537
+ if (typeof hw.Card.Version == 'number') { hw2.hardware.identifiers.board_version = hw.Card.Version; }
1538
+ if (typeof hw.Card.SerialNumber == 'string') { hw2.hardware.identifiers.board_serial = hw.Card.SerialNumber.trim(); }
1539
+ if (typeof hw.Card.SerialNumber == 'number') { hw2.hardware.identifiers.board_serial = hw.Card.SerialNumber; }
1540
}
1541
if ((hw.Chips != null) && (hw.Chips.length > 0)) {
1542
for (var i in hw.Chips) {
@@ -1633,8 +1641,10 @@ module.exports.CreateAmtManager = function (parent) {
1641
// Update the device
1642
dev.aquired = {};
1643
dev.aquired.controlMode = 1; // 1 = CCM, 2 = ACM
1636
- var verSplit = dev.amtstack.wsman.comm.amtVersion.split('.');
1637
- if (verSplit.length >= 3) { dev.aquired.version = verSplit[0] + '.' + verSplit[1] + '.' + verSplit[2]; dev.aquired.majorver = parseInt(verSplit[0]); dev.aquired.minorver = parseInt(verSplit[1]); }
1644
+ if (typeof dev.amtstack.wsman.comm.amtVersion == 'string') {
1645
+ var verSplit = dev.amtstack.wsman.comm.amtVersion.split('.');
1646
+ if (verSplit.length >= 3) { dev.aquired.version = verSplit[0] + '.' + verSplit[1] + '.' + verSplit[2]; dev.aquired.majorver = parseInt(verSplit[0]); dev.aquired.minorver = parseInt(verSplit[1]); }
1647
+ }
1648
if ((typeof dev.mpsConnection.tag.meiState.OsHostname == 'string') && (typeof dev.mpsConnection.tag.meiState.OsDnsSuffix == 'string')) {
1649
dev.aquired.host = dev.mpsConnection.tag.meiState.OsHostname + '.' + dev.mpsConnection.tag.meiState.OsDnsSuffix;
1650
}
@@ -1757,8 +1767,10 @@ module.exports.CreateAmtManager = function (parent) {
1767
// Update the device
1768
dev.aquired = {};
1769
dev.aquired.controlMode = 2; // 1 = CCM, 2 = ACM
1760
- var verSplit = dev.amtstack.wsman.comm.amtVersion.split('.');
1761
- if (verSplit.length >= 3) { dev.aquired.version = verSplit[0] + '.' + verSplit[1] + '.' + verSplit[2]; dev.aquired.majorver = parseInt(verSplit[0]); dev.aquired.minorver = parseInt(verSplit[1]); }
1770
+ if (typeof dev.amtstack.wsman.comm.amtVersion == 'string') {
1771
+ var verSplit = dev.amtstack.wsman.comm.amtVersion.split('.');
1772
+ if (verSplit.length >= 3) { dev.aquired.version = verSplit[0] + '.' + verSplit[1] + '.' + verSplit[2]; dev.aquired.majorver = parseInt(verSplit[0]); dev.aquired.minorver = parseInt(verSplit[1]); }
1773
+ }
1774
if ((typeof dev.mpsConnection.tag.meiState.OsHostname == 'string') && (typeof dev.mpsConnection.tag.meiState.OsDnsSuffix == 'string')) {
1775
dev.aquired.host = dev.mpsConnection.tag.meiState.OsHostname + '.' + dev.mpsConnection.tag.meiState.OsDnsSuffix;
1776
}