Browse Source

deploy-ng: be lenient when processing DLLs with invalid codepage

rdb 7 years ago
parent
commit
5322811e08
1 changed files with 11 additions and 8 deletions
  1. 11 8
      direct/src/showutil/pefile.py

+ 11 - 8
direct/src/showutil/pefile.py

@@ -112,11 +112,18 @@ class DataResource(object):
         self.data = None
         self.code_page = 0
 
-    def get_data(self):
-        if self.code_page:
-            return self.data.encode('cp%d' % self.code_page)
+    @property
+    def encoding(self):
+        if self.code_page == 0:
+            return 'ascii'
         else:
-            return self.data
+            return 'cp%d' % (self.code_page)
+
+    def get_data(self):
+        return self.data
+
+    def get_text(self, errors='strict'):
+        return self.data.decode(self.encoding, errors)
 
 
 class IconGroupResource(object):
@@ -479,10 +486,6 @@ class ResourceTable(object):
             entry = IconGroupResource()
             entry.unpack_from(data)
         else:
-            if code_page != 0:
-                # Decode the data using the provided code page.
-                data = data.decode("cp%d" % code_page)
-
             entry = DataResource()
             entry.data = data
             entry.code_page = code_page