On Thu, 21 Sep 2023 08:29:24 +0300 undef <csm.su...@gmail.com> wrote:
> Package: game-data-packager
> Version: 63
> Severity: normal
> 
> Dear Maintainer,
> when I tried to build quake2-full-data from the existing deb package
> gdb crashed
> 
>[..]

I was able to easily reproduce the crash.
A fix could be as simple as

--- a/game_data_packager/build.py
+++ b/game_data_packager/build.py
@@ -903,7 +903,7 @@ class PackagingTask:
         if provider is None:
             try_to_unpack: Collection[str] = self.game.files
             should_provide = set()
-            distinctive_dirs = False
+            distinctive_dirs = True
         else:
             try_to_unpack = set(f.name for f in
provider.provides_files)
             should_provide = set(try_to_unpack)


but i'm not familiar enough with that part of the code to have a full
view of the implications of that change...

Context:
- the file provided on the CLI is "unknown/untrusted" by g-d-p and so
there isn't any "provider" for the stream and for that case,
'distinctive_dirs' was set to False (what's the reasoning for that ?)

- quake2 have multiple (different) gamefiles that have the same
basename()

- the way we loop through the files in the unpacker and the gamefiles
lead to a tentative to seek backward when 'distinctive_dirs' is False
(we tries to extract dir1/file.md2 instead of dir2/file.md2)


I don't know why we should treat "unknown" stream with
'distinctive_dirs = False' by default, but maybe I'm missing something?


br,
Sébastien

Reply via email to