[Lldb-commits] [lldb] 23f145d - [NFC] Fix leak in command options configuration.
Jordan Rupprecht via lldb-commits
lldb-commits at lists.llvm.org
Thu Dec 8 16:37:50 PST 2022
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;
};
More information about the lldb-commits
mailing list