diff options
author | Greg Clayton <gclayton@apple.com> | 2012-01-31 23:19:33 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-01-31 23:19:33 +0000 |
commit | fbf1b6417314553d44ae16ab2d9eb1200d17316d (patch) | |
tree | 080d2d0d1bde031f8d77a29652ed331e463abb1e | |
parent | 8c159b87a0c99b02b1d143560a973c13c779643e (diff) | |
download | bcm5719-llvm-fbf1b6417314553d44ae16ab2d9eb1200d17316d.tar.gz bcm5719-llvm-fbf1b6417314553d44ae16ab2d9eb1200d17316d.zip |
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
-rw-r--r-- | lldb/include/lldb/API/SBType.h | 8 | ||||
-rw-r--r-- | lldb/scripts/Python/interface/SBType.i | 2 | ||||
-rw-r--r-- | lldb/source/API/SBType.cpp | 4 | ||||
-rw-r--r-- | lldb/test/python_api/default-constructor/sb_module.py | 4 | ||||
-rw-r--r-- | lldb/test/python_api/default-constructor/sb_target.py | 3 | ||||
-rw-r--r-- | lldb/test/python_api/default-constructor/sb_value.py | 27 |
6 files changed, 42 insertions, 6 deletions
diff --git a/lldb/include/lldb/API/SBType.h b/lldb/include/lldb/API/SBType.h index ff41d37aa4d..b668fa39192 100644 --- a/lldb/include/lldb/API/SBType.h +++ b/lldb/include/lldb/API/SBType.h @@ -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 diff --git a/lldb/scripts/Python/interface/SBType.i b/lldb/scripts/Python/interface/SBType.i index f072da87183..64a957486c5 100644 --- a/lldb/scripts/Python/interface/SBType.i +++ b/lldb/scripts/Python/interface/SBType.i @@ -131,6 +131,8 @@ find_type.py: class SBType { public: + SBType (); + SBType (const lldb::SBType &rhs); ~SBType (); diff --git a/lldb/source/API/SBType.cpp b/lldb/source/API/SBType.cpp index 36fcfa7792f..63c6c0a46cf 100644 --- a/lldb/source/API/SBType.cpp +++ b/lldb/source/API/SBType.cpp @@ -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; diff --git a/lldb/test/python_api/default-constructor/sb_module.py b/lldb/test/python_api/default-constructor/sb_module.py index 990337a9f9a..d026be15506 100644 --- a/lldb/test/python_api/default-constructor/sb_module.py +++ b/lldb/test/python_api/default-constructor/sb_module.py @@ -23,4 +23,6 @@ def fuzz_obj(obj): print symbol for symbol in obj: print symbol - + obj.GetAddressByteSize() + obj.GetByteOrder() + obj.GetTriple() diff --git a/lldb/test/python_api/default-constructor/sb_target.py b/lldb/test/python_api/default-constructor/sb_target.py index 7e4f191e493..19f453768b2 100644 --- a/lldb/test/python_api/default-constructor/sb_target.py +++ b/lldb/test/python_api/default-constructor/sb_target.py @@ -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) diff --git a/lldb/test/python_api/default-constructor/sb_value.py b/lldb/test/python_api/default-constructor/sb_value.py index b3a26def772..a82a3e38f78 100644 --- a/lldb/test/python_api/default-constructor/sb_value.py +++ b/lldb/test/python_api/default-constructor/sb_value.py @@ -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() |