forked from OSchip/llvm-project
Added fuzz testing for when we call API calls with an invalid object.
We previously weren't catching that SBValue::Cast(...) would crash if we had an invalid (empty) SBValue object. Cleaned up the SBType API a bit. llvm-svn: 149447
This commit is contained in:
parent
8c159b87a0
commit
fbf1b64173
|
@ -138,8 +138,6 @@ public:
|
|||
GetDescription (lldb::SBStream &description,
|
||||
lldb::DescriptionLevel description_level);
|
||||
|
||||
protected:
|
||||
|
||||
#ifndef SWIG
|
||||
lldb::SBType &
|
||||
operator = (const lldb::SBType &rhs);
|
||||
|
@ -149,7 +147,11 @@ protected:
|
|||
|
||||
bool
|
||||
operator != (lldb::SBType &rhs);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
#ifndef SWIG
|
||||
lldb_private::TypeImpl &
|
||||
ref ();
|
||||
|
||||
|
@ -157,7 +159,7 @@ protected:
|
|||
ref () const;
|
||||
|
||||
void
|
||||
reset(const lldb::TypeImplSP &type_impl_sp);
|
||||
SetSP (const lldb::TypeImplSP &type_impl_sp);
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -131,6 +131,8 @@ find_type.py:
|
|||
class SBType
|
||||
{
|
||||
public:
|
||||
SBType ();
|
||||
|
||||
SBType (const lldb::SBType &rhs);
|
||||
|
||||
~SBType ();
|
||||
|
|
|
@ -84,7 +84,7 @@ SBType::operator != (SBType &rhs)
|
|||
}
|
||||
|
||||
void
|
||||
SBType::reset(const lldb::TypeImplSP &type_impl_sp)
|
||||
SBType::SetSP (const lldb::TypeImplSP &type_impl_sp)
|
||||
{
|
||||
m_opaque_sp = type_impl_sp;
|
||||
}
|
||||
|
@ -556,7 +556,7 @@ SBTypeMember::GetType ()
|
|||
SBType sb_type;
|
||||
if (m_opaque_ap.get())
|
||||
{
|
||||
sb_type.reset (m_opaque_ap->GetTypeImpl());
|
||||
sb_type.SetSP (m_opaque_ap->GetTypeImpl());
|
||||
}
|
||||
return sb_type;
|
||||
|
||||
|
|
|
@ -23,4 +23,6 @@ def fuzz_obj(obj):
|
|||
print symbol
|
||||
for symbol in obj:
|
||||
print symbol
|
||||
|
||||
obj.GetAddressByteSize()
|
||||
obj.GetByteOrder()
|
||||
obj.GetTriple()
|
||||
|
|
|
@ -49,6 +49,9 @@ def fuzz_obj(obj):
|
|||
obj.EnableAllWatchpoints()
|
||||
obj.DisableAllWatchpoints()
|
||||
obj.DeleteAllWatchpoints()
|
||||
obj.GetAddressByteSize()
|
||||
obj.GetByteOrder()
|
||||
obj.GetTriple()
|
||||
obj.WatchAddress(123, 8, True, True)
|
||||
obj.GetBroadcaster()
|
||||
obj.GetDescription(lldb.SBStream(), lldb.eDescriptionLevelBrief)
|
||||
|
|
|
@ -7,6 +7,7 @@ import lldb
|
|||
|
||||
def fuzz_obj(obj):
|
||||
obj.GetError()
|
||||
obj.GetID()
|
||||
obj.GetName()
|
||||
obj.GetTypeName()
|
||||
obj.GetByteSize()
|
||||
|
@ -37,3 +38,29 @@ def fuzz_obj(obj):
|
|||
obj.WatchPointee(True, False, True)
|
||||
for child_val in obj:
|
||||
print child_val
|
||||
error = lldb.SBError()
|
||||
obj.GetValueAsSigned (error, 0)
|
||||
obj.GetValueAsUnsigned (error, 0)
|
||||
obj.GetValueAsSigned(0)
|
||||
obj.GetValueAsUnsigned(0)
|
||||
obj.GetDynamicValue (lldb.eNoDynamicValues)
|
||||
obj.GetStaticValue ()
|
||||
obj.IsDynamic()
|
||||
invalid_type = lldb.SBType()
|
||||
obj.CreateChildAtOffset ("a", 12, invalid_type)
|
||||
obj.Cast (invalid_type)
|
||||
obj.CreateValueFromExpression ("pt->x", "pt->x")
|
||||
obj.CreateValueFromAddress ("x", 0x123, invalid_type)
|
||||
invalid_data = lldb.SBData()
|
||||
obj.CreateValueFromData ("x", invalid_data, invalid_type)
|
||||
obj.GetValueForExpressionPath("[0]")
|
||||
obj.AddressOf()
|
||||
obj.GetLoadAddress()
|
||||
obj.GetAddress()
|
||||
obj.GetPointeeData (0, 1)
|
||||
obj.GetData ()
|
||||
obj.GetTarget()
|
||||
obj.GetProcess()
|
||||
obj.GetThread()
|
||||
obj.GetFrame()
|
||||
obj.GetType()
|
||||
|
|
Loading…
Reference in New Issue