diff --git a/UnityPy/classes/legacy_patch/Texture2D.py b/UnityPy/classes/legacy_patch/Texture2D.py index 680829af..5819ac2a 100644 --- a/UnityPy/classes/legacy_patch/Texture2D.py +++ b/UnityPy/classes/legacy_patch/Texture2D.py @@ -63,7 +63,9 @@ def _Texture2d_set_image( def _Texture2D_get_image_data(self: Texture2D): if self.image_data: return self.image_data - if self.m_StreamData: + # a stream data object without a path is a leftover of incomplete assets + # and must not be used to resolve a resource file + if self.m_StreamData and self.m_StreamData.path: from ...helpers.ResourceReader import get_resource_data return get_resource_data( diff --git a/UnityPy/helpers/ResourceReader.py b/UnityPy/helpers/ResourceReader.py index 62e9800a..70580335 100644 --- a/UnityPy/helpers/ResourceReader.py +++ b/UnityPy/helpers/ResourceReader.py @@ -9,6 +9,8 @@ def get_resource_data(res_path: str, assets_file: "SerializedFile", offset: int, size: int): basename = ntpath.basename(res_path) + if not basename: + raise ValueError(f"Invalid resource path: {res_path!r}") name, ext = ntpath.splitext(basename) possible_names = [ basename,