diff --git a/parser-library/nt-headers.h b/parser-library/nt-headers.h index 075011c..a025009 100644 --- a/parser-library/nt-headers.h +++ b/parser-library/nt-headers.h @@ -220,6 +220,13 @@ struct resource_dir_entry_sz { }; struct resource_dir_entry { + inline resource_dir_entry(void) + : ID(0), + RVA(0), + type(0), + name(0), + lang(0) {} + boost::uint32_t ID; boost::uint32_t RVA; boost::uint32_t type; diff --git a/parser-library/parse.cpp b/parser-library/parse.cpp index 06e0567..c952a49 100644 --- a/parser-library/parse.cpp +++ b/parser-library/parse.cpp @@ -161,14 +161,9 @@ bool parse_resource_table(bounded_buffer *sectionData, ::uint32_t o, ::uint32_t return true; // This is not a hard error. It does happen. for (i = 0; i < rdt.NameEntries + rdt.IDEntries; i++) { - resource_dir_entry *rde; + resource_dir_entry *rde = dirent; if (!dirent) { - rde = new resource_dir_entry(); - if (!rde) - return false; - memset(rde, 0, sizeof(*rde)); - } else { - rde = dirent; + rde = new resource_dir_entry; } READ_DWORD_PTR(sectionData, o, rde, ID);