Skip to content

Conversation

@DemiMarie
Copy link
Contributor

@DemiMarie DemiMarie commented Jan 5, 2026

GnuPG's parsing of list options is not well-documented. The current behavior is consistent with that of GnuPG itself, but it depends on various GnuPG implementation details. Avoid this by only passing cleaned-up "canonical" list options. This means that options are separated with a single comma, as are a list of subpacket arguments. To simplify the code, whether a list option argument is in double quotes is preserved.

This modifies the option in-place, rather than making a copy. A bounded buffer abstraction and assertions are used to validate that data is not overwritten until after it has already been read and therefore will not be needed again. This also ensures that no out of bounds writes occur.

Fixes QubesOS/qubes-issues#10540

@DemiMarie DemiMarie force-pushed the cleanup branch 5 times, most recently from 9cdc680 to 8394915 Compare January 5, 2026 18:21
GnuPG's parsing of list options is not well-documented.  The current
behavior is consistent with that of GnuPG itself, but it depends on
various GnuPG implementation details.  Avoid this by only passing
cleaned-up "canonical" list options.  This means that options are
separated with a single comma, as are a list of subpacket arguments.
To simplify the code, whether a list option argument is in double quotes
is preserved.

This modifies the option in-place, rather than making a copy.  A bounded
buffer abstraction and assertions are used to validate that data is not
overwritten until after it has already been read and therefore will not
be needed again.  This also ensures that no out of bounds writes occur.

Fixes QubesOS/qubes-issues#10540
@qubesos-bot
Copy link

qubesos-bot commented Jan 7, 2026

OpenQA test summary

Complete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026011018-4.3-debian&flavor=pull-requests

Test run included the following:

New failures, excluding unstable

Compared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2025111104-4.3&flavor=update

Failed tests

No failures!

Fixed failures

Compared to: https://openqa.qubes-os.org/tests/158999#dependencies

10 fixed
  • system_tests_dispvm

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.dispvm failed (exit code 1), details report...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_20_DispVM_whonix-workstation-18: test_030_edit_file (failure)
      AssertionError: Timeout waiting for editor window

    • TC_20_DispVM_whonix-workstation-18: test_100_open_in_dispvm (failure)
      AssertionError: './open-file test.txt' failed with ./open-file test...

  • system_tests_dispvm_perf@hw7

    • system_tests: Fail (unknown)
      Tests qubes.tests.integ.dispvm_perf failed (exit code 1), details r...

    • system_tests: Failed (test died)
      # Test died: Some tests failed at qubesos/tests/system_tests.pm lin...

    • TC_00_DispVMPerf_debian-13-xfce: test_411_dom0_dispvm_preload_gui_concurrent_api (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...

    • TC_00_DispVMPerf_debian-13-xfce: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

    • TC_00_DispVMPerf_whonix-workstation-18: test_409_dom0_dispvm_preload_gui_api (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf.py --dvm=test-ins...

    • TC_00_DispVMPerf_whonix-workstation-18: test_900_reader (failure)
      AssertionError: '/usr/lib/qubes/tests/dispvm_perf_reader.py --templ...

Unstable tests

Details

Performance Tests

Performance degradation:

No issues

Remaining performance tests:

13 tests
  • debian-13-xfce_dom0-dispvm-api (mean:6.405): 76.86 🟢 ( previous job: 84.68, improvement: 90.77%)
  • debian-13-xfce_dom0-dispvm-gui-api (mean:7.593): 91.12 🟢 ( previous job: 98.62, improvement: 92.39%)
  • debian-13-xfce_dom0-dispvm-preload-2-api (mean:3.095): 37.14
  • debian-13-xfce_dom0-dispvm-preload-2-delay-0-api (mean:2.92): 35.04
  • debian-13-xfce_dom0-dispvm-preload-2-delay-minus-1d2-api (mean:3.168): 38.02
  • debian-13-xfce_dom0-dispvm-preload-4-api (mean:2.607): 31.29
  • debian-13-xfce_dom0-dispvm-preload-4-delay-0-api (mean:2.664): 31.97
  • debian-13-xfce_dom0-dispvm-preload-4-delay-minus-1d2-api (mean:2.386): 28.63
  • debian-13-xfce_dom0-dispvm-preload-2-gui-api (mean:4.493): 53.91
  • debian-13-xfce_dom0-dispvm-preload-4-gui-api (mean:3.701): 44.41
  • debian-13-xfce_dom0-dispvm-preload-6-gui-api (mean:3.167): 38.00
  • debian-13-xfce_dom0-vm-api (mean:0.045): 0.54 🟢 ( previous job: 0.59, improvement: 91.20%)
  • debian-13-xfce_dom0-vm-gui-api (mean:0.042): 0.50 🟢 ( previous job: 0.58, improvement: 86.87%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

split-gpg1: Only pass the documented form of list options

3 participants