@@ -192,7 +192,7 @@ class UserString(HeapItemBinary, HeapItemString):
192192
193193 flag : Optional [int ] = None
194194
195- def __init__ (self , data : Union [bytes , HeapItemBinary ], rva : Optional [int ] = None , encoding = "utf-16" ):
195+ def __init__ (self , data : Union [bytes , HeapItemBinary ], rva : Optional [int ] = None , encoding = "utf-16" , errors = "strict" ):
196196 self .encoding = encoding
197197 if isinstance (data , bytes ):
198198 HeapItemBinary .__init__ (self , data , rva = rva )
@@ -234,7 +234,7 @@ def __init__(self, data: Union[bytes, HeapItemBinary], rva: Optional[int] = None
234234 str_buf = buf
235235
236236 try :
237- self .value = str_buf .decode (encoding )
237+ self .value = str_buf .decode (encoding , errors = errors )
238238 except UnicodeDecodeError as e :
239239 logger .warning (f"UserString decode error (rva:0x{ self .rva :08x} ): { e } " )
240240 self .value = None
@@ -257,12 +257,12 @@ def get_bytes(self, index) -> Optional[bytes]:
257257
258258 return item .value_bytes ()
259259
260- def get (self , index , encoding = "utf-16" ) -> Optional [UserString ]:
260+ def get (self , index , encoding = "utf-16" , errors = "strict" ) -> Optional [UserString ]:
261261 bin_item = super ().get (index )
262262 if bin_item is None :
263263 return None
264264
265- us_item = UserString (bin_item , encoding = encoding )
265+ us_item = UserString (bin_item , encoding = encoding , errors = errors )
266266
267267 return us_item
268268
0 commit comments