From b47f27515a6486b6e043afe3288b65617d6fd8d4 Mon Sep 17 00:00:00 2001 From: William Tan <1284324+Ninja3047@users.noreply.github.com> Date: Wed, 28 Feb 2024 18:37:50 -0500 Subject: [PATCH] return early if we cannot find the entry block in the cfg (#408) --- lib/Lifters/FunctionLifter.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/Lifters/FunctionLifter.cpp b/lib/Lifters/FunctionLifter.cpp index f6ffd2d1..216bd1de 100644 --- a/lib/Lifters/FunctionLifter.cpp +++ b/lib/Lifters/FunctionLifter.cpp @@ -409,6 +409,13 @@ llvm::Function *FunctionLifter::LiftFunction(const FunctionDecl &decl) { return nullptr; } + // Function has no valid instructions. + auto &cfg = decl.cfg; + if (cfg.find(decl.entry_uid) == cfg.end()) { + LOG(ERROR) << "Function missing entry block " << std::hex << decl.address; + return nullptr; + } + // This is our higher-level function, i.e. it presents itself more like // a function compiled from C/C++, rather than being a three-argument Remill // function. In this function, we will stack-allocate a `State` structure,