From 6862bf00d073fd5de2b720b37c600384cc13d358 Mon Sep 17 00:00:00 2001
From: erev0s <erev0s@mail.com>
Date: Fri, 15 Mar 2024 00:16:52 +0200
Subject: [PATCH 1/1] Patch update based on
 https://github.com/androguard/androguard/issues/1014

Forwarded: https://github.com/androguard/androguard/pull/1016

---
 androguard/core/bytecodes/axml/__init__.py | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/androguard/core/bytecodes/axml/__init__.py b/androguard/core/bytecodes/axml/__init__.py
index 0db39308..ef5b42d1 100644
--- a/androguard/core/bytecodes/axml/__init__.py
+++ b/androguard/core/bytecodes/axml/__init__.py
@@ -2175,18 +2175,19 @@
         self.id = unpack('<B', buff.read(1))[0]
         self.res0 = unpack('<B', buff.read(1))[0]
         self.res1 = unpack('<H', buff.read(2))[0]
+        # TODO: https://github.com/androguard/androguard/issues/1014 | Properly account for the cases where res0/1 are not zero
         try:
             if self.res0 != 0:
-                raise ResParserError("res0 must be zero!")
+                log.warning("res0 must be zero!")
             if self.res1 != 0:
-                raise ResParserError("res1 must be zero!")
+                log.warning("res1 must be zero!")
             self.entryCount = unpack('<I', buff.read(4))[0]
 
             self.typespec_entries = []
             for i in range(0, self.entryCount):
                 self.typespec_entries.append(unpack('<I', buff.read(4))[0])
-        except ResParserError as e:
-            log.warning(e)
+        except Exception as e:
+            log.error(e)
 
 class ARSCResType:
     """
@@ -2667,12 +2668,12 @@
         self.res0, = unpack("<B", buff.read(1))
         try:
             if self.res0 != 0:
-                raise ResParserError("res0 must be always zero!")
+                log.warning("res0 must be always zero!")
             self.data_type = unpack('<B', buff.read(1))[0]
             # data is interpreted according to data_type
             self.data = unpack('<I', buff.read(4))[0]
-        except ResParserError as e:
-            log.warning(e)
+        except Exception as e:
+            log.error(e)
 
     def get_data_value(self):
         return self.parent.stringpool_main.getString(self.data)
-- 
2.39.2

