From f84bffdebe398422f7b4b5d214595df22240d764 Mon Sep 17 00:00:00 2001 From: Andrew <munin@mimisbrunnr.net> Date: Thu, 25 Jul 2013 19:10:26 -0400 Subject: [PATCH] read in data directory table --- parser-library/parse.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/parser-library/parse.cpp b/parser-library/parse.cpp index f772bd0..4c76296 100644 --- a/parser-library/parse.cpp +++ b/parser-library/parse.cpp @@ -104,9 +104,19 @@ bool readOptionalHeader(bounded_buffer *b, optional_header_32 &header) { #undef READ_DWORD #undef READ_BYTE - ::uint32_t maxEnt = header.NumberOfRvaAndSizes; - for(::uint32_t i = 0; i < maxEnt; i++) { + for(::uint32_t i = 0; i < header.NumberOfRvaAndSizes; i++) { + ::uint32_t c = (i*sizeof(data_directory)); + ::uint32_t o; + o = c + _offset(data_directory, VirtualAddress); + if(readDword(b, o, header.DataDirectory[i].VirtualAddress) == false) { + return false; + } + + o = c+ _offset(data_directory, Size); + if(readDword(b, o, header.DataDirectory[i].Size) == false) { + return false; + } } return true;