[Lldb-commits] [lldb] r134037 - in /lldb/trunk: source/API/SBModule.cpp test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py test/python_api/default-constructor/sb_module.py test/python_api/default-constructor/sb_process.py

Johnny Chen johnny.chen at apple.com
Tue Jun 28 15:32:15 PDT 2011


Author: johnny
Date: Tue Jun 28 17:32:15 2011
New Revision: 134037

URL: http://llvm.org/viewvc/llvm-project?rev=134037&view=rev
Log:
Add fuzz calls for SBModule and SBProcess.

Added:
    lldb/trunk/test/python_api/default-constructor/sb_module.py
    lldb/trunk/test/python_api/default-constructor/sb_process.py
Modified:
    lldb/trunk/source/API/SBModule.cpp
    lldb/trunk/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py

Modified: lldb/trunk/source/API/SBModule.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBModule.cpp?rev=134037&r1=134036&r2=134037&view=diff
==============================================================================
--- lldb/trunk/source/API/SBModule.cpp (original)
+++ lldb/trunk/source/API/SBModule.cpp Tue Jun 28 17:32:15 2011
@@ -223,10 +223,11 @@
 bool
 SBModule::ResolveFileAddress (lldb::addr_t vm_addr, SBAddress& addr)
 {
-    if (m_opaque_sp)
+    if (m_opaque_sp && addr.IsValid())
         return m_opaque_sp->ResolveFileAddress (vm_addr, *addr);
     
-    addr->Clear();
+    if (addr.IsValid())
+        addr->Clear();
     return false;
 }
 

Modified: lldb/trunk/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py?rev=134037&r1=134036&r2=134037&view=diff
==============================================================================
--- lldb/trunk/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py (original)
+++ lldb/trunk/test/python_api/default-constructor/TestDefaultConstructorForAPIObjects.py Tue Jun 28 17:32:15 2011
@@ -211,6 +211,9 @@
         if self.TraceOn():
             print obj
         self.assertFalse(obj)
+        # Do fuzz testing on the invalid obj, it should not crash lldb.
+        import sb_module
+        sb_module.fuzz_obj(obj)
 
     @python_api_test
     def test_SBProcess(self):
@@ -218,6 +221,9 @@
         if self.TraceOn():
             print obj
         self.assertFalse(obj)
+        # Do fuzz testing on the invalid obj, it should not crash lldb.
+        import sb_process
+        sb_process.fuzz_obj(obj)
 
     @python_api_test
     def test_SBStream(self):

Added: lldb/trunk/test/python_api/default-constructor/sb_module.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/python_api/default-constructor/sb_module.py?rev=134037&view=auto
==============================================================================
--- lldb/trunk/test/python_api/default-constructor/sb_module.py (added)
+++ lldb/trunk/test/python_api/default-constructor/sb_module.py Tue Jun 28 17:32:15 2011
@@ -0,0 +1,19 @@
+"""
+Fuzz tests an object after the default construction to make sure it does not crash lldb.
+"""
+
+import sys
+import lldb
+
+def fuzz_obj(obj):
+    obj.GetFileSpec()
+    obj.GetPlatformFileSpec()
+    obj.SetPlatformFileSpec(lldb.SBFileSpec())
+    obj.GetUUIDBytes()
+    obj.GetUUIDString()
+    obj.ResolveFileAddress(sys.maxint, lldb.SBAddress())
+    obj.ResolveSymbolContextForAddress(lldb.SBAddress(), 0)
+    obj.GetDescription(lldb.SBStream())
+    obj.GetNumSymbols()
+    obj.GetSymbolAtIndex(sys.maxint)
+    obj.FindFunctions("my_func", 0xffffffff, True, lldb.SBSymbolContextList())

Added: lldb/trunk/test/python_api/default-constructor/sb_process.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/python_api/default-constructor/sb_process.py?rev=134037&view=auto
==============================================================================
--- lldb/trunk/test/python_api/default-constructor/sb_process.py (added)
+++ lldb/trunk/test/python_api/default-constructor/sb_process.py Tue Jun 28 17:32:15 2011
@@ -0,0 +1,42 @@
+"""
+Fuzz tests an object after the default construction to make sure it does not crash lldb.
+"""
+
+import sys
+import lldb
+
+def fuzz_obj(obj):
+    obj.GetTarget()
+    obj.GetByteOrder()
+    obj.PutSTDIN("my data", 7)
+    obj.GetSTDOUT(6)
+    obj.GetSTDERR(6)
+    event = lldb.SBEvent()
+    obj.ReportEventState(event, None)
+    obj.AppendEventStateReport(event, lldb.SBCommandReturnObject())
+    error = lldb.SBError()
+    obj.RemoteAttachToProcessWithID(123, error)
+    obj.RemoteLaunch(None, None, None, None, None, None, 0, False, error)
+    obj.GetNumThreads()
+    obj.GetThreadAtIndex(0)
+    obj.GetThreadByID(0)
+    obj.GetSelectedThread()
+    obj.SetSelectedThread(lldb.SBThread())
+    obj.SetSelectedThreadByID(0)
+    obj.GetState()
+    obj.GetExitStatus()
+    obj.GetExitDescription()
+    obj.GetProcessID()
+    obj.GetAddressByteSize()
+    obj.Destroy()
+    obj.Continue()
+    obj.Stop()
+    obj.Kill()
+    obj.Detach()
+    obj.Signal(7)
+    obj.ReadMemory(0x0000ffff, 10, error)
+    obj.WriteMemory(0x0000ffff, "hi data", error)
+    obj.GetBroadcaster()
+    obj.GetDescription(lldb.SBStream())
+    obj.LoadImage(lldb.SBFileSpec(), error)
+    obj.UnloadImage(0)





More information about the lldb-commits mailing list