diff options
| author | Florent Monjalet <florent.monjalet@gmail.com> | 2015-12-21 11:29:37 +0100 |
|---|---|---|
| committer | Florent Monjalet <florent.monjalet@gmail.com> | 2016-01-18 14:02:32 +0100 |
| commit | e6ec6f9d800584234301733340b171092aac3f9a (patch) | |
| tree | 71958d2d3a778303b27a34cbfdeeae50f3993755 | |
| parent | f5f920ce597d0c4e03d0b79aa9b20a70e325cef9 (diff) | |
| download | miasm-e6ec6f9d800584234301733340b171092aac3f9a.tar.gz miasm-e6ec6f9d800584234301733340b171092aac3f9a.zip | |
Types: typo, MemStruct.get_offset should be a classmethod
Also added tests and MemArray.get_offset
| -rw-r--r-- | miasm2/core/types.py | 10 | ||||
| -rw-r--r-- | test/core/types.py | 11 |
2 files changed, 19 insertions, 2 deletions
diff --git a/miasm2/core/types.py b/miasm2/core/types.py index b6eaf0e4..bb7536e5 100644 --- a/miasm2/core/types.py +++ b/miasm2/core/types.py @@ -1362,9 +1362,10 @@ class MemStruct(MemType): offset = 0 return self._addr + offset - def get_offset(self, field_name): + @classmethod + def get_offset(cls, field_name): """Shorthand for self.get_type().get_offset(field_name).""" - return self._type.get_offset(field_name) + return cls.get_type().get_offset(field_name) def get_field(self, name): """Get a field value by name. @@ -1575,6 +1576,11 @@ class MemArray(MemType): def get_addr(self, idx=0): return self._addr + self.get_type().get_offset(idx) + @classmethod + def get_offset(cls, idx): + """Shorthand for self.get_type().get_offset(idx).""" + return cls.get_type().get_offset(idx) + def __getitem__(self, idx): return self.get_type().get_item(self._vm, self._addr, idx) diff --git a/test/core/types.py b/test/core/types.py index 7ad8ad13..bb1d5da1 100644 --- a/test/core/types.py +++ b/test/core/types.py @@ -518,6 +518,17 @@ assert anon.c1 == 0x55 assert anon.c2 == 0x77 assert anon.d == 0x33 +# get_offset +for field, off in (("a", 0), ("b1", 1), ("b2", 1), ("c1", 3), ("c2", 4), + ("d", 5)): + assert Anon.get_offset(field) == Anon.get_type().get_offset(field) + assert Anon.get_offset(field) == off + +arr_t = Array(Num("H")) +for idx, off in ((0, 0), (1, 2), (30, 60)): + assert arr_t.get_offset(idx) == arr_t.lval.get_offset(idx) + assert arr_t.get_offset(idx) == off + # Repr tests |