| skipped 1173 lines |
1174 | 1174 | | if (cert_dir.RVA() > 0 and cert_dir.size() > 0 and cert_dir.RVA() >= this->overlay_offset_) { |
1175 | 1175 | | const uint64_t start_cert_offset = cert_dir.RVA() - this->overlay_offset_; |
1176 | 1176 | | const uint64_t end_cert_offset = start_cert_offset + cert_dir.size(); |
1177 | | - | LIEF_DEBUG("Add [0x{:x}, 0x{:x}]", this->overlay_offset_, this->overlay_offset_ + start_cert_offset); |
1178 | | - | LIEF_DEBUG("Add [0x{:x}, 0x{:x}]", |
1179 | | - | this->overlay_offset_ + end_cert_offset, |
1180 | | - | this->overlay_offset_ + this->overlay_.size() - end_cert_offset); |
1181 | | - | ios |
1182 | | - | .write(this->overlay_.data(), start_cert_offset) |
1183 | | - | .write(this->overlay_.data() + end_cert_offset, this->overlay_.size() - end_cert_offset); |
| 1177 | + | if (end_cert_offset <= this->overlay_.size()) { |
| 1178 | + | LIEF_DEBUG("Add [0x{:x}, 0x{:x}]", this->overlay_offset_, this->overlay_offset_ + start_cert_offset); |
| 1179 | + | LIEF_DEBUG("Add [0x{:x}, 0x{:x}]", |
| 1180 | + | this->overlay_offset_ + end_cert_offset, |
| 1181 | + | this->overlay_offset_ + this->overlay_.size() - end_cert_offset); |
| 1182 | + | ios |
| 1183 | + | .write(this->overlay_.data(), start_cert_offset) |
| 1184 | + | .write(this->overlay_.data() + end_cert_offset, this->overlay_.size() - end_cert_offset); |
| 1185 | + | } else { |
| 1186 | + | ios.write(this->overlay()); |
| 1187 | + | } |
1184 | 1188 | | } else { |
1185 | 1189 | | ios.write(this->overlay()); |
1186 | 1190 | | } |
| skipped 532 lines |