<rdar://problem/12552374> & <rdar://problem/13100674>

The vtable pointer field is not necessarily a pointer and hence cannot be used for validation

llvm-svn: 173947
This commit is contained in:
Enrico Granata 2013-01-30 17:44:16 +00:00
parent 81dcc62805
commit 54f279fff6

View File

@ -242,17 +242,6 @@ class Class_Data_V2:
logger >> "Marking as invalid - cachePointer is not allowed"
self.valid = 0
return
self.vtablePointer = Utilities.read_child_of(self.valobj,3*self.sys_params.pointer_size,self.sys_params.types_cache.addr_ptr_type)
if not(Utilities.is_valid_pointer(self.vtablePointer,self.sys_params.pointer_size,allow_tagged=0)):
logger >> "Marking as invalid - vtablePointer is invalid"
self.valid = 0
return
if not(Utilities.is_allowed_pointer(self.vtablePointer)):
logger >> "Marking as invalid - vtablePointer is not allowed"
self.valid = 0
return
self.dataPointer = Utilities.read_child_of(self.valobj,4*self.sys_params.pointer_size,self.sys_params.types_cache.addr_ptr_type)
if not(Utilities.is_valid_pointer(self.dataPointer,self.sys_params.pointer_size,allow_tagged=0)):
logger >> "Marking as invalid - dataPointer is invalid"
@ -321,7 +310,6 @@ class Class_Data_V2:
return 'isaPointer = ' + hex(self.isaPointer) + "\n" + \
"superclassIsaPointer = " + hex(self.superclassIsaPointer) + "\n" + \
"cachePointer = " + hex(self.cachePointer) + "\n" + \
"vtablePointer = " + hex(self.vtablePointer) + "\n" + \
"data = " + hex(self.dataPointer)
def is_tagged(self):