Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Unified Diff: courgette/disassembler.cc

Issue 1676683002: [Courgette] Clean up Disassembler; fix ELF Memory leaks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: courgette/disassembler.cc
diff --git a/courgette/disassembler.cc b/courgette/disassembler.cc
index b9fce8bdc0efc7d01bc4a1864738378430ef45b3..9b58ba0815736a89e2ea8ff12e8f47e17fc07dee 100644
--- a/courgette/disassembler.cc
+++ b/courgette/disassembler.cc
@@ -4,10 +4,12 @@
#include "courgette/disassembler.h"
+#include "base/logging.h"
+
namespace courgette {
Disassembler::Disassembler(const void* start, size_t length)
- : failure_reason_("uninitialized") {
+ : failure_reason_("uninitialized") {
start_ = reinterpret_cast<const uint8_t*>(start);
length_ = length;
end_ = start_ + length_;
@@ -15,13 +17,21 @@ Disassembler::Disassembler(const void* start, size_t length)
Disassembler::~Disassembler() {};
-const uint8_t* Disassembler::OffsetToPointer(size_t offset) const {
- assert(start_ + offset <= end_);
- return start_ + offset;
+const uint8_t* Disassembler::FileOffsetToPointer(FileOffset file_offset) const {
+ CHECK_LE(file_offset, static_cast<FileOffset>(end_ - start_));
+ return start_ + file_offset;
+}
+
+const uint8_t* Disassembler::RVAToPointer(RVA rva) const {
+ FileOffset file_offset = RVAToFileOffset(rva);
+ if (file_offset == kNoFileOffset)
+ return nullptr;
+
+ return FileOffsetToPointer(file_offset);
}
bool Disassembler::Good() {
- failure_reason_ = NULL;
+ failure_reason_ = nullptr;
return true;
}

Powered by Google App Engine
This is Rietveld 408576698