Add fuzz calls for SBModule and SBProcess.

llvm-svn: 134037
This commit is contained in:
Johnny Chen 2011-06-28 22:32:15 +00:00
parent d1c487cd00
commit a25bf6efb5
4 changed files with 70 additions and 2 deletions

View File

@ -223,9 +223,10 @@ SBModule::SetModule (const lldb::ModuleSP& module_sp)
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);
if (addr.IsValid())
addr->Clear();
return false;
}

View File

@ -211,6 +211,9 @@ class APIDefaultConstructorTestCase(TestBase):
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 @@ class APIDefaultConstructorTestCase(TestBase):
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):

View File

@ -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())

View File

@ -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)