Author: David Spickett
Date: 2020-09-17T10:26:16+01:00
New Revision: c687af0c30b4dbdc9f614d5e061c888238e0f9c5

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

LOG: [lldb] Don't send invalid region addresses to lldb server

Previously when <addr> in "memory region <addr>" didn't
parse correctly, we'd print an error then also ask lldb-server
for a region containing LLDB_INVALID_ADDRESS.

(lldb) memory region not_an_address
error: invalid address argument "not_an_address"...
error: Server returned invalid range

Only send the command to lldb-server if the address
parsed correctly.

(lldb) memory region not_an_address
error: invalid address argument "not_an_address"...

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D87694

Added: 
    

Modified: 
    lldb/source/Commands/CommandObjectMemory.cpp
    lldb/test/API/functionalities/memory-region/TestMemoryRegion.py

Removed: 
    


################################################################################
diff  --git a/lldb/source/Commands/CommandObjectMemory.cpp 
b/lldb/source/Commands/CommandObjectMemory.cpp
index 474c37710149..d91893799498 100644
--- a/lldb/source/Commands/CommandObjectMemory.cpp
+++ b/lldb/source/Commands/CommandObjectMemory.cpp
@@ -1707,6 +1707,7 @@ class CommandObjectMemoryRegion : public 
CommandObjectParsed {
                 "invalid address argument \"%s\": %s\n", command[0].c_str(),
                 error.AsCString());
             result.SetStatus(eReturnStatusFailed);
+            return false;
           }
         }
 

diff  --git a/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py 
b/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py
index 283cc945ed09..61e64d44e794 100644
--- a/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py
+++ b/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py
@@ -41,6 +41,12 @@ def test(self):
         self.assertFalse(result.Succeeded())
         self.assertRegexpMatches(result.GetError(), "Usage: memory region 
ADDR")
 
+        # Test that when the address fails to parse, we show an error and do 
not continue
+        interp.HandleCommand("memory region not_an_address", result)
+        self.assertFalse(result.Succeeded())
+        self.assertEqual(result.GetError(),
+                "error: invalid address argument \"not_an_address\": address 
expression \"not_an_address\" evaluation failed\n")
+
         # Now let's print the memory region starting at 0 which should always 
work.
         interp.HandleCommand("memory region 0x0", result)
         self.assertTrue(result.Succeeded())


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to