INNER CODE UNIT · C++
past_secdir
trailofbits/uthenticode · src/uthenticode.cpp:451
auto const *const past_secdir = raw_cert_table.data() + raw_cert_table.size();
// Let us tread carefully, we expect all members of WIN_CERTIFICATE up to bCertificate
while (current_wincert + 8 < past_secdir) {
size_t offset = 0;
std::uint32_t length = *reinterpret_cast<std::uint32_t *>(current_wincert + offset);
offset += sizeof(length);
std::uint16_t revision = *reinterpret_cast<std::uint16_t *>(current_wincert + offset);
offset += sizeof(revision);
std::uint16_t type = *reinterpret_cast<std::uint16_t *>(current_wincert + offset);
offset += sizeof(type);
// Continue only we can satisfy the length
if (current_wincert + length <= past_secdir && length > offset) {
std::vector<std::uint8_t> cert_data(current_wincert + offset, current_wincert + length);
certs.emplace_back(static_cast<certificate_revision>(revision),