From 0f02dd34f22650d8af0070e7ad21632525e33da8 Mon Sep 17 00:00:00 2001 From: Chelsea Cassanova Date: Fri, 3 Jun 2022 20:04:13 -0400 Subject: [PATCH] [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 --- lldb/source/Commands/CommandObjectMemory.cpp | 5 ++++- lldb/test/Shell/Driver/TestPageZeroRead.test | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 lldb/test/Shell/Driver/TestPageZeroRead.test diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index b7678ad..ab54578 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -592,7 +592,10 @@ protected: 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 0000000..474867f --- /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 -- 2.7.4