From 2eccb6d6b37e762cbcd08a4864284ed23df25769 Mon Sep 17 00:00:00 2001 From: Loic Jaquemet Date: Wed, 7 Jun 2017 16:21:39 -0600 Subject: [PATCH] More PY3 compatibility fixes --- haystack/reverse/context.py | 7 ++++--- test/haystack/mappings/test_base.py | 2 -- test/haystack/search/test_api.py | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/haystack/reverse/context.py b/haystack/reverse/context.py index aacee92a..f9b64615 100644 --- a/haystack/reverse/context.py +++ b/haystack/reverse/context.py @@ -200,6 +200,7 @@ def get_predecessors(self, record): predecessors_label = self.__record_graph.predecessors(hex(record.address)) records = [] for label in predecessors_label: + # FIXME, eradicate all L for PY3 migration if label[-1] == 'L': label = label[:-1] record_addr = int(label, 16) @@ -381,7 +382,7 @@ def listStructuresAddresses(self): return list(map(long, self._list_records().keys())) def listStructures(self): - return self._list_records().values() + return list(self._list_records().values()) def is_known_address(self, address): return address in self._structures_addresses @@ -459,10 +460,10 @@ def cacheLoad(cls, memory_handler, heap_addr): try: with open(context_cache, 'rb') as fin: ctx = pickle.load(fin) - except EOFError as e: + except (ValueError, EOFError) as e: os.remove(context_cache) log.error('Error in the context file. File cleaned. Please restart.') - raise RuntimeError('Error in the context file. File cleaned. Please restart.') + raise IOError('Error in the context file. File cleaned. Please restart.') log.debug('\t[-] loaded my context from cache') ctx.config = config ctx.memory_handler = memory_handler diff --git a/test/haystack/mappings/test_base.py b/test/haystack/mappings/test_base.py index 55e5164d..328ea649 100644 --- a/test/haystack/mappings/test_base.py +++ b/test/haystack/mappings/test_base.py @@ -292,8 +292,6 @@ def test_hasRef(self): self.assertTrue(self.memory_handler.hasRef(int, 0xcafecafe)) self.assertTrue(self.memory_handler.hasRef(float, 0xcafecafe)) self.assertTrue(self.memory_handler.hasRef(str, 0xcafecafe)) - # FIXME, where does unicode comes from ? - self.assertFalse(self.memory_handler.hasRef(unicode, 0xcafecafe)) self.assertFalse(self.memory_handler.hasRef(int, 0xdeadbeef)) me = self.memory_handler.getRefByAddr(0xcafecafe) # multiple refs diff --git a/test/haystack/search/test_api.py b/test/haystack/search/test_api.py index 39f5a98b..7c376d49 100644 --- a/test/haystack/search/test_api.py +++ b/test/haystack/search/test_api.py @@ -190,8 +190,7 @@ def test_refresh(self): self.assertEqual(validated, True) self.assertEqual(usual.val1, 0x0aaaaaaa) self.assertEqual(usual.val2, 0x0ffffff0) - self.assertEqual(usual.txt, 'This a string with a test this is a test ' - 'string') + self.assertEqual(usual.txt, b'This a string with a test this is a test string') # so now we got python objects # that is node 1