Index: courgette/program_detector.cc |
diff --git a/courgette/program_detector.cc b/courgette/program_detector.cc |
index 60b295fef7a82825c7e2f097c22c9fd55b87446c..e659522265b18728365a71e253eb1ed02bbc4368 100644 |
--- a/courgette/program_detector.cc |
+++ b/courgette/program_detector.cc |
@@ -23,22 +23,26 @@ std::unique_ptr<Disassembler> DetectDisassembler(const void* buffer, |
size_t length) { |
std::unique_ptr<Disassembler> disassembler; |
- disassembler.reset(new DisassemblerWin32X86(buffer, length)); |
- if (disassembler->ParseHeader()) |
- return disassembler; |
- |
- disassembler.reset(new DisassemblerWin32X64(buffer, length)); |
- if (disassembler->ParseHeader()) |
- return disassembler; |
- |
- disassembler.reset(new DisassemblerElf32X86(buffer, length)); |
- if (disassembler->ParseHeader()) |
- return disassembler; |
- |
- disassembler.reset(new DisassemblerElf32ARM(buffer, length)); |
- if (disassembler->ParseHeader()) |
- return disassembler; |
- |
+ if (DisassemblerWin32X86::QuickDetects(buffer, length)) { |
huangs
2016/06/10 21:10:22
NIT: Rename to QuickDetect() (verb).
etiennep
2016/06/13 17:50:22
Done.
|
+ disassembler.reset(new DisassemblerWin32X86(buffer, length)); |
+ if (disassembler->ParseHeader()) |
+ return disassembler; |
+ } |
+ if (DisassemblerWin32X64::QuickDetects(buffer, length)) { |
+ disassembler.reset(new DisassemblerWin32X64(buffer, length)); |
+ if (disassembler->ParseHeader()) |
+ return disassembler; |
+ } |
+ if (DisassemblerElf32X86::QuickDetects(buffer, length)) { |
+ disassembler.reset(new DisassemblerElf32X86(buffer, length)); |
+ if (disassembler->ParseHeader()) |
+ return disassembler; |
+ } |
+ if (DisassemblerElf32ARM::QuickDetects(buffer, length)) { |
+ disassembler.reset(new DisassemblerElf32ARM(buffer, length)); |
+ if (disassembler->ParseHeader()) |
+ return disassembler; |
+ } |
return nullptr; |
} |