[Lldb-commits] [lldb] 0f02dd3 - [lldb/Commands] Prevent crash due to reading memory from page zero.

Chelsea Cassanova via lldb-commits lldb-commits at lists.llvm.org
Wed Jun 8 15:18:23 PDT 2022


Author: Chelsea Cassanova
Date: 2022-06-08T18:10:41-04:00
New Revision: 0f02dd34f22650d8af0070e7ad21632525e33da8

URL: https://github.com/llvm/llvm-project/commit/0f02dd34f22650d8af0070e7ad21632525e33da8
DIFF: https://github.com/llvm/llvm-project/commit/0f02dd34f22650d8af0070e7ad21632525e33da8.diff

LOG: [lldb/Commands] Prevent crash due to reading memory from page zero.

Adds a check to ensure that a process exists before attempting to get
its ABI to prevent lldb from crashing due to trying to read from page zero.

Differential revision: https://reviews.llvm.org/D127016

Added: 
    lldb/test/Shell/Driver/TestPageZeroRead.test

Modified: 
    lldb/source/Commands/CommandObjectMemory.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp
index b7678add53995..ab54578898a17 100644
--- a/lldb/source/Commands/CommandObjectMemory.cpp
+++ b/lldb/source/Commands/CommandObjectMemory.cpp
@@ -592,7 +592,10 @@ class CommandObjectMemoryRead : public CommandObjectParsed {
       return false;
     }
 
-    ABISP abi = m_exe_ctx.GetProcessPtr()->GetABI();
+    ABISP abi;
+    if (Process *proc = m_exe_ctx.GetProcessPtr())
+      abi = proc->GetABI();
+
     if (abi)
       addr = abi->FixDataAddress(addr);
 

diff  --git a/lldb/test/Shell/Driver/TestPageZeroRead.test b/lldb/test/Shell/Driver/TestPageZeroRead.test
new file mode 100644
index 0000000000000..474867f2cce7d
--- /dev/null
+++ b/lldb/test/Shell/Driver/TestPageZeroRead.test
@@ -0,0 +1,6 @@
+# REQUIRES: system-darwin
+# Ensure that the read from memory command doesn't try and read from page zero.
+# RUN: %clang_host %p/Inputs/hello.c -g -o a.out
+# RUN: %lldb -b a.out -o 'settings set interpreter.stop-command-source-on-error false' -s %s 2>&1 | FileCheck %s
+x 0
+# CHECK: error: error reading data from section __PAGEZERO


        


More information about the lldb-commits mailing list