Prevent STR Blinding #859
@ -18,6 +18,8 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
|
|
||||||
|
- PLOC SUPV sets: Added missing `PoolReadGuard` instantiations when reading boot status report
|
||||||
|
and latchup status report.
|
||||||
- PLOC SUPV latchup report could not be handled previously.
|
- PLOC SUPV latchup report could not be handled previously.
|
||||||
- Bugfix in PLOC SUPV latchup report parsing.
|
- Bugfix in PLOC SUPV latchup report parsing.
|
||||||
- Bugfix in PLOC MPSoC HK set: Set and variables were not set valid.
|
- Bugfix in PLOC MPSoC HK set: Set and variables were not set valid.
|
||||||
|
@ -900,7 +900,7 @@ ReturnValue_t FreshSupvHandler::parseTmPackets() {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case(Apid::LATCHUP_MON): {
|
case (Apid::LATCHUP_MON): {
|
||||||
if (tmReader.getServiceId() ==
|
if (tmReader.getServiceId() ==
|
||||||
static_cast<uint8_t>(supv::tm::LatchupMonId::LATCHUP_STATUS_REPORT)) {
|
static_cast<uint8_t>(supv::tm::LatchupMonId::LATCHUP_STATUS_REPORT)) {
|
||||||
handleLatchupStatusReport(receivedData);
|
handleLatchupStatusReport(receivedData);
|
||||||
@ -1399,15 +1399,17 @@ ReturnValue_t FreshSupvHandler::verifyPacket(const uint8_t* start, size_t foundL
|
|||||||
|
|
||||||
ReturnValue_t FreshSupvHandler::handleBootStatusReport(const uint8_t* data) {
|
ReturnValue_t FreshSupvHandler::handleBootStatusReport(const uint8_t* data) {
|
||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
|
|
||||||
result = verifyPacket(data, tmReader.getFullPacketLen());
|
result = verifyPacket(data, tmReader.getFullPacketLen());
|
||||||
|
|
||||||
if (result == result::CRC_FAILURE) {
|
if (result == result::CRC_FAILURE) {
|
||||||
sif::error << "PlocSupervisorHandler::handleBootStatusReport: Boot status report has invalid"
|
sif::error << "PlocSupervisorHandler::handleBootStatusReport: Boot status report has invalid"
|
||||||
" crc"
|
" crc"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
PoolReadGuard pg(&bootStatusReport);
|
||||||
|
if (pg.getReadResult() != returnvalue::OK) {
|
||||||
|
return pg.getReadResult();
|
||||||
|
}
|
||||||
|
|
||||||
const uint8_t* payloadStart = tmReader.getPayloadStart();
|
const uint8_t* payloadStart = tmReader.getPayloadStart();
|
||||||
uint16_t offset = 0;
|
uint16_t offset = 0;
|
||||||
@ -1471,13 +1473,17 @@ ReturnValue_t FreshSupvHandler::handleLatchupStatusReport(const uint8_t* data) {
|
|||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
|
|
||||||
result = verifyPacket(data, tmReader.getFullPacketLen());
|
result = verifyPacket(data, tmReader.getFullPacketLen());
|
||||||
|
|
||||||
if (result == result::CRC_FAILURE) {
|
if (result == result::CRC_FAILURE) {
|
||||||
sif::error << "PlocSupervisorHandler::handleLatchupStatusReport: Latchup status report has "
|
sif::error << "PlocSupervisorHandler::handleLatchupStatusReport: Latchup status report has "
|
||||||
<< "invalid crc" << std::endl;
|
<< "invalid crc" << std::endl;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PoolReadGuard pg(&latchupStatusReport);
|
||||||
|
if (pg.getReadResult() != returnvalue::OK) {
|
||||||
|
return pg.getReadResult();
|
||||||
|
}
|
||||||
|
|
||||||
const uint8_t* payloadData = tmReader.getPayloadStart();
|
const uint8_t* payloadData = tmReader.getPayloadStart();
|
||||||
uint16_t offset = 0;
|
uint16_t offset = 0;
|
||||||
latchupStatusReport.id = *(payloadData + offset);
|
latchupStatusReport.id = *(payloadData + offset);
|
||||||
|
Loading…
Reference in New Issue
Block a user