Good find. base64.b64encode() will add "=" padding characters when the
number of input characters is not dividable by three. base64.b64decode()
seems to stop decoding when hitting the padding character.

So concatenating the output of multiple base64.b64encode calls will only
work in case the encoding input is a multiple of three.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to apport in Ubuntu.
https://bugs.launchpad.net/bugs/2076269

Title:
  invalid base64 encoded gzip data on s390x causes autopkgtest failures

Status in Ubuntu on IBM z Systems:
  New
Status in apport package in Ubuntu:
  New
Status in python3.12 package in Ubuntu:
  New

Bug description:
  The following tests all fail with an encoding/decoding issue:

  tests/unit/test_problem_report.py::T:test_modify
  
tests/unit/test_report.py::T::test_report_from_systemd_coredump_storage_journal
  tests/integration/test_problem_report::T::test_write_file

  Example failure:

  564s =================================== FAILURES 
===================================
  564s ________________________________ T.test_modify 
_________________________________
  564s
  564s self = <tests.unit.test_problem_report.T testMethod=test_modify>
  564s
  564s     def test_modify(self):
  564s         """reading, modifying fields, and writing back."""
  564s         report = textwrap.dedent(
  564s             """\
  564s             ProblemType: Crash
  564s             Date: now!
  564s             Long:
  564s              xxx
  564s              .
  564s              yyy
  564s             Short: Bar
  564s             File: base64
  564s              H4sICAAAAAAC/0ZpbGUA
  564s              c3RyxIAMcBAFAK/2p9MfAAAA
  564s             """
  564s         ).encode()
  564s
  564s         pr = problem_report.ProblemReport()
  564s         pr.load(io.BytesIO(report))
  564s
  564s         self.assertEqual(pr["Long"], "xxx\n.\nyyy")
  564s
  564s         # write back unmodified
  564s         out = io.BytesIO()
  564s         pr.write(out)
  564s >       self.assertEqual(out.getvalue(), report)
  564s E       AssertionError: b'Pro[73 chars]e64\n H4sICAAAAAAC/0ZpbGUA\n 
cnTChAxwEA==\n BRgAr/an0x8AAAA=\n' != b'Pro[73 chars]e64\n 
H4sICAAAAAAC/0ZpbGUA\n c3RyxIAMcBAFAK/2p9MfAAAA\n'
  564s
  564s tests/unit/test_problem_report.py:509: AssertionError

  Autopkgtest noble log: 
https://autopkgtest.ubuntu.com/results/autopkgtest-noble/noble/s390x/a/apport/20240807_023039_8850a@/log.gz
  oracular log: 
https://autopkgtest.ubuntu.com/results/autopkgtest-oracular/oracular/s390x/a/apport/20240805_132135_d3a80@/log.gz

  This failure was seen on noble (log above) but also on oracular.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2076269/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to