Index: courgette/disassembler.cc |
diff --git a/courgette/disassembler.cc b/courgette/disassembler.cc |
index 5514be909248a1b6b9b7a3f1892295c9ee6f0388..103bbe014b82e5525b89c17ab8bb4fd833883b1c 100644 |
--- a/courgette/disassembler.cc |
+++ b/courgette/disassembler.cc |
@@ -13,6 +13,7 @@ |
#include "courgette/assembly_program.h" |
#include "courgette/courgette.h" |
+#include "courgette/disassembler_elf_32_x86.h" |
#include "courgette/disassembler_win32_x86.h" |
#include "courgette/encoded_program.h" |
@@ -30,8 +31,14 @@ Disassembler* DetectDisassembler(const void* buffer, size_t length) { |
disassembler = new DisassemblerWin32X86(buffer, length); |
if (disassembler->ParseHeader()) |
return disassembler; |
+ else |
+ delete disassembler; |
- delete disassembler; |
+ disassembler = new DisassemblerElf32X86(buffer, length); |
+ if (disassembler->ParseHeader()) |
+ return disassembler; |
+ else |
+ delete disassembler; |
return NULL; |
} |