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;