Author: Jordan Rupprecht Date: 2022-12-08T16:37:43-08:00 New Revision: 23f145daa50c3f51a7fb8c8d68c55e5f4a8027c2
URL: https://github.com/llvm/llvm-project/commit/23f145daa50c3f51a7fb8c8d68c55e5f4a8027c2 DIFF: https://github.com/llvm/llvm-project/commit/23f145daa50c3f51a7fb8c8d68c55e5f4a8027c2.diff LOG: [NFC] Fix leak in command options configuration. `m_options.Append(new OptionPermissions())` leaks because the pointer passed in is not owned. Use a class member to ensure lifetime, which is the common pattern used for this API. Found by the LLDB command interpreter fuzzer. The fuzz input is running `ap $` twice. Added: Modified: lldb/source/Commands/CommandObjectPlatform.cpp Removed: ################################################################################ diff --git a/lldb/source/Commands/CommandObjectPlatform.cpp b/lldb/source/Commands/CommandObjectPlatform.cpp index 98c6a3b2dd301..d72dd06c31f9e 100644 --- a/lldb/source/Commands/CommandObjectPlatform.cpp +++ b/lldb/source/Commands/CommandObjectPlatform.cpp @@ -456,12 +456,13 @@ class CommandObjectPlatformMkDir : public CommandObjectParsed { Options *GetOptions() override { if (!m_options.DidFinalize()) { - m_options.Append(new OptionPermissions()); + m_options.Append(&m_option_permissions); m_options.Finalize(); } return &m_options; } + OptionPermissions m_option_permissions; OptionGroupOptions m_options; }; @@ -519,12 +520,13 @@ class CommandObjectPlatformFOpen : public CommandObjectParsed { Options *GetOptions() override { if (!m_options.DidFinalize()) { - m_options.Append(new OptionPermissions()); + m_options.Append(&m_option_permissions); m_options.Finalize(); } return &m_options; } + OptionPermissions m_option_permissions; OptionGroupOptions m_options; }; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits