Author: Michał Górny Date: 2020-11-09T11:35:11+01:00 New Revision: afcdd43bf71d9503dbd2b700710818daafa0cb00
URL: https://github.com/llvm/llvm-project/commit/afcdd43bf71d9503dbd2b700710818daafa0cb00 DIFF: https://github.com/llvm/llvm-project/commit/afcdd43bf71d9503dbd2b700710818daafa0cb00.diff LOG: [llvm] [Support] Fix segv if argv0 is null in getMainExecutable() When LLDB Python bindings are used and stack backtraces are enabled for logging, getMainExecutable() is called with argv0 being null. This caused the fallback function getprogpath() (used on FreeBSD, NetBSD and Linux) to segfault. Make it handle null executable name gracefully. Differential Revision: https://reviews.llvm.org/D91012 Added: Modified: lldb/test/API/commands/log/basic/TestLogging.py llvm/lib/Support/Unix/Path.inc Removed: ################################################################################ diff --git a/lldb/test/API/commands/log/basic/TestLogging.py b/lldb/test/API/commands/log/basic/TestLogging.py index da1a3e8a50cf..4ba67f8794b6 100644 --- a/lldb/test/API/commands/log/basic/TestLogging.py +++ b/lldb/test/API/commands/log/basic/TestLogging.py @@ -93,8 +93,6 @@ def test_log_append(self): # Enable all log options and check that nothing crashes. @skipIfWindows - # TODO: figure out why it segfaults - @skipIfFreeBSD def test_all_log_options(self): if (os.path.exists(self.log_file)): os.remove(self.log_file) diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc index 27b54610867b..8b1dbdb08a14 100644 --- a/llvm/lib/Support/Unix/Path.inc +++ b/llvm/lib/Support/Unix/Path.inc @@ -147,6 +147,9 @@ test_dir(char ret[PATH_MAX], const char *dir, const char *bin) static char * getprogpath(char ret[PATH_MAX], const char *bin) { + if (bin == nullptr) + return nullptr; + /* First approach: absolute path. */ if (bin[0] == '/') { if (test_dir(ret, "/", bin) == 0) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits