Skip to content

Crash when comparing two ZIP files [with embedded .buildinfo files]

This bug was originally reported by Hans-Christoph Steiner (hans@eds.org) in Debian bug #987994:

Package: diffoscope
Version: 168~bpo10+1
Severity: important

I downloaded the job artifact files from two related GitLab CI jobs and compared them:

https://gitlab.com/guardianproject/tor-android/-/jobs/1231242475/artifacts/download

https://gitlab.com/eighthave/tor-android/-/jobs/1227385382/artifacts/download

diffoscope --html jobzip.html \
    tor-android_release_0.4.5.7_044c580d3aeed61b315cd1c22520bbba3137acfb.zip \
    tor-android_release_0.4.5.7_044c580d3aeed61b315cd1c22520bbba3137acfb\(1\).zip


Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 771, in main
    sys.exit(run_diffoscope(parsed_args))
  File "/usr/lib/python3/dist-packages/diffoscope/main.py", line 725, in run_diffoscope
    difference = compare_root_paths(path1, path2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 69, in compare_root_paths
    difference = compare_files(file1, file2)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 125, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 499, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 436, in _compare_using_details
    other.as_container, no_recurse=no_recurse
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/container.py", line 192, in compare_pair
    file1, file2, source=None, diff_content_only=no_recurse
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/compare.py", line 125, in compare_files
    return file1.compare(file2, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 499, in compare
    difference = self._compare_using_details(other, source)
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/utils/file.py", line 406, in _compare_using_details
    details.extend(self.compare_details(other, source))
  File "/usr/lib/python3/dist-packages/diffoscope/comparators/debian.py", line 195, in compare_details
    self._deb822.get_as_string("Checksums-Sha256"),
  File "/usr/lib/python3/dist-packages/debian/deb822.py", line 1657, in get_as_string
    if hasattr(self[key], 'keys'):   # single-line
  File "/usr/lib/python3/dist-packages/debian/deb822.py", line 500, in __getitem__
    value = self.__dict[keyi]
KeyError: 'Checksums-Sha256'
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information