From f656e74afd6ecdbdc2d7397db7ebd46d8cf46ca6 Mon Sep 17 00:00:00 2001 From: Michael Spiegel <11677+mspiegel@users.noreply.github.com> Date: Tue, 5 Sep 2023 02:59:20 -0400 Subject: [PATCH] Fix memory leak in sign_tool.cpp (#971) Ownership of the parser is transferred from measure_enclave() to load_enclave(). load_enclave() passes the parser by reference to the CLoader constructor. CLoader cannot be responsible for deleting the parser. The parser must be deleted at the end of load_enclave(). Signed-off-by: Michael Spiegel --- sdk/sign_tool/SignTool/sign_tool.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/sign_tool/SignTool/sign_tool.cpp b/sdk/sign_tool/SignTool/sign_tool.cpp index a2907990..7bf0ee05 100644 --- a/sdk/sign_tool/SignTool/sign_tool.cpp +++ b/sdk/sign_tool/SignTool/sign_tool.cpp @@ -100,7 +100,9 @@ typedef enum _file_path_t static int load_enclave(BinParser *parser, metadata_t *metadata) { std::unique_ptr ploader(new CLoader(const_cast(parser->get_start_addr()), *parser)); - return ploader->load_enclave_ex(NULL, 0, metadata, NULL, 0, NULL); + int ret = ploader->load_enclave_ex(NULL, 0, metadata, NULL, 0, NULL); + delete parser; + return ret; }