From a1ccc8ebda4f3cba0ae942bdedfc879d6ed15f3d Mon Sep 17 00:00:00 2001 From: Nguyen Anh Quynh Date: Wed, 18 Jul 2018 13:37:45 +0800 Subject: [PATCH] python: raise CsError(CS_ERR_SKIPDATA) when accessing irrelevant data in skipdata mode. this fixes issue #679 --- bindings/python/capstone/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bindings/python/capstone/__init__.py b/bindings/python/capstone/__init__.py index ec8a9ff3..b390cf1b 100644 --- a/bindings/python/capstone/__init__.py +++ b/bindings/python/capstone/__init__.py @@ -541,6 +541,10 @@ class CsInsn(object): raise CsError(CS_ERR_DETAIL) def __gen_detail(self): + if self._raw.id == 0: + # do nothing in skipdata mode + return + arch = self._cs.arch if arch == CS_ARCH_ARM: (self.usermode, self.vector_size, self.vector_data, self.cps_mode, self.cps_flag, self.cc, self.update_flags, \ @@ -577,6 +581,8 @@ class CsInsn(object): if 'operands' not in _dict: self.__gen_detail() if name not in _dict: + if self._raw.id == 0: + raise CsError(CS_ERR_SKIPDATA) raise AttributeError(name) return _dict[name]