feat(rust/flatpak): Complete VM test parity (211 tests passing) and fix OSTree GVariant pipeline
All 138 sandbox-free Nix checks plus all 73 NixOS VM tests now pass.
Headline additions:
- 15 VM test categories implemented (sandbox, override, config, bundle,
build-update-repo, repair, info, history, seccomp, extensions, D-Bus
proxy, documents/permissions, remote+network, metadata validation,
misc/security)
- Portal fallback (on-disk store under $XDG_DATA_HOME/flatpak/portal/)
- --subpath, --require-version, complete subcommand, --sdk in build-finish
- --persist sandbox + override + build-finish, including CVE-2024-42472
path-traversal/symlink protections
- info --show-commit/--show-location/--show-runtime/--show-sdk/
--show-extensions/--file-access
- Bundle metadata-mismatch detection in build-import-bundle
- Repair walks the deploy tree directly so missing-metadata refs are
detected and regenerated
- update actually pulls when remote commit checksum differs
OSTree pipeline fixes uncovered by VM tests:
- create_commit now writes a real GVariant commit object instead of an
ad-hoc byte stream; parse_commit can round-trip its own output
- serialize_dirtree rewritten as proper GVariant (a(say), a(sayay))
- Summary, dirtree, and filez parsers had off-by-one bugs (string_end+1
was double-counting NUL) and missed alignment cases (a(sayay) is
alignment 1, not 8); guarded against bad framing offsets
- build_export now copies metadata into files/metadata before commit so
remote installs receive command= and other Application keys
- filez header minimum size relaxed from 28 to 24 bytes (fits empty
symlink targets without xattrs)
CLI parser fixes:
- override accepts both --flag value and --flag=value forms across all
flags; adds missing --allow, --disallow, --talk-name, --own-name,
--system-talk-name, --system-own-name and inverses; bus-name overrides
go to [Session/System Bus Policy] groups instead of [Context]
- run accepts --command=CMD in addition to --command CMD
- install_from_dir and cmd_uninstall now log history entries
- build-init/build-finish print informational messages on stderr instead
of polluting stdout
Test harness:
- libtest-nix.sh gains assert_match / assert_not_match
- Two override tests had \| (literal pipe) in ERE patterns; replaced with
plain |; persist-path-traversal rewritten to assert the warning
Signed-off-by: Niclas Overby <niclas@overby.me>
feat(rust/flatpak): Complete VM test parity (211 tests passing) and fix OSTree GVariant pipeline
All 138 sandbox-free Nix checks plus all 73 NixOS VM tests now pass.
Headline additions:
- 15 VM test categories implemented (sandbox, override, config, bundle,
build-update-repo, repair, info, history, seccomp, extensions, D-Bus
proxy, documents/permissions, remote+network, metadata validation,
misc/security)
- Portal fallback (on-disk store under $XDG_DATA_HOME/flatpak/portal/)
- --subpath, --require-version, complete subcommand, --sdk in build-finish
- --persist sandbox + override + build-finish, including CVE-2024-42472
path-traversal/symlink protections
- info --show-commit/--show-location/--show-runtime/--show-sdk/
--show-extensions/--file-access
- Bundle metadata-mismatch detection in build-import-bundle
- Repair walks the deploy tree directly so missing-metadata refs are
detected and regenerated
- update actually pulls when remote commit checksum differs
OSTree pipeline fixes uncovered by VM tests:
- create_commit now writes a real GVariant commit object instead of an
ad-hoc byte stream; parse_commit can round-trip its own output
- serialize_dirtree rewritten as proper GVariant (a(say), a(sayay))
- Summary, dirtree, and filez parsers had off-by-one bugs (string_end+1
was double-counting NUL) and missed alignment cases (a(sayay) is
alignment 1, not 8); guarded against bad framing offsets
- build_export now copies metadata into files/metadata before commit so
remote installs receive command= and other Application keys
- filez header minimum size relaxed from 28 to 24 bytes (fits empty
symlink targets without xattrs)
CLI parser fixes:
- override accepts both --flag value and --flag=value forms across all
flags; adds missing --allow, --disallow, --talk-name, --own-name,
--system-talk-name, --system-own-name and inverses; bus-name overrides
go to [Session/System Bus Policy] groups instead of [Context]
- run accepts --command=CMD in addition to --command CMD
- install_from_dir and cmd_uninstall now log history entries
- build-init/build-finish print informational messages on stderr instead
of polluting stdout
Test harness:
- libtest-nix.sh gains assert_match / assert_not_match
- Two override tests had \| (literal pipe) in ERE patterns; replaced with
plain |; persist-path-traversal rewritten to assert the warning
Signed-off-by: Niclas Overby <niclas@overby.me>
feat(rust/flatpak): Complete VM test parity (211 tests passing) and fix OSTree GVariant pipeline
All 138 sandbox-free Nix checks plus all 73 NixOS VM tests now pass.
Headline additions:
- 15 VM test categories implemented (sandbox, override, config, bundle,
build-update-repo, repair, info, history, seccomp, extensions, D-Bus
proxy, documents/permissions, remote+network, metadata validation,
misc/security)
- Portal fallback (on-disk store under $XDG_DATA_HOME/flatpak/portal/)
- --subpath, --require-version, complete subcommand, --sdk in build-finish
- --persist sandbox + override + build-finish, including CVE-2024-42472
path-traversal/symlink protections
- info --show-commit/--show-location/--show-runtime/--show-sdk/
--show-extensions/--file-access
- Bundle metadata-mismatch detection in build-import-bundle
- Repair walks the deploy tree directly so missing-metadata refs are
detected and regenerated
- update actually pulls when remote commit checksum differs
OSTree pipeline fixes uncovered by VM tests:
- create_commit now writes a real GVariant commit object instead of an
ad-hoc byte stream; parse_commit can round-trip its own output
- serialize_dirtree rewritten as proper GVariant (a(say), a(sayay))
- Summary, dirtree, and filez parsers had off-by-one bugs (string_end+1
was double-counting NUL) and missed alignment cases (a(sayay) is
alignment 1, not 8); guarded against bad framing offsets
- build_export now copies metadata into files/metadata before commit so
remote installs receive command= and other Application keys
- filez header minimum size relaxed from 28 to 24 bytes (fits empty
symlink targets without xattrs)
CLI parser fixes:
- override accepts both --flag value and --flag=value forms across all
flags; adds missing --allow, --disallow, --talk-name, --own-name,
--system-talk-name, --system-own-name and inverses; bus-name overrides
go to [Session/System Bus Policy] groups instead of [Context]
- run accepts --command=CMD in addition to --command CMD
- install_from_dir and cmd_uninstall now log history entries
- build-init/build-finish print informational messages on stderr instead
of polluting stdout
Test harness:
- libtest-nix.sh gains assert_match / assert_not_match
- Two override tests had \| (literal pipe) in ERE patterns; replaced with
plain |; persist-path-traversal rewritten to assert the warning
Signed-off-by: Niclas Overby <niclas@overby.me>
feat(rust/flatpak): Complete VM test parity (211 tests passing) and fix OSTree GVariant pipeline
All 138 sandbox-free Nix checks plus all 73 NixOS VM tests now pass.
Headline additions:
- 15 VM test categories implemented (sandbox, override, config, bundle,
build-update-repo, repair, info, history, seccomp, extensions, D-Bus
proxy, documents/permissions, remote+network, metadata validation,
misc/security)
- Portal fallback (on-disk store under $XDG_DATA_HOME/flatpak/portal/)
- --subpath, --require-version, complete subcommand, --sdk in build-finish
- --persist sandbox + override + build-finish, including CVE-2024-42472
path-traversal/symlink protections
- info --show-commit/--show-location/--show-runtime/--show-sdk/
--show-extensions/--file-access
- Bundle metadata-mismatch detection in build-import-bundle
- Repair walks the deploy tree directly so missing-metadata refs are
detected and regenerated
- update actually pulls when remote commit checksum differs
OSTree pipeline fixes uncovered by VM tests:
- create_commit now writes a real GVariant commit object instead of an
ad-hoc byte stream; parse_commit can round-trip its own output
- serialize_dirtree rewritten as proper GVariant (a(say), a(sayay))
- Summary, dirtree, and filez parsers had off-by-one bugs (string_end+1
was double-counting NUL) and missed alignment cases (a(sayay) is
alignment 1, not 8); guarded against bad framing offsets
- build_export now copies metadata into files/metadata before commit so
remote installs receive command= and other Application keys
- filez header minimum size relaxed from 28 to 24 bytes (fits empty
symlink targets without xattrs)
CLI parser fixes:
- override accepts both --flag value and --flag=value forms across all
flags; adds missing --allow, --disallow, --talk-name, --own-name,
--system-talk-name, --system-own-name and inverses; bus-name overrides
go to [Session/System Bus Policy] groups instead of [Context]
- run accepts --command=CMD in addition to --command CMD
- install_from_dir and cmd_uninstall now log history entries
- build-init/build-finish print informational messages on stderr instead
of polluting stdout
Test harness:
- libtest-nix.sh gains assert_match / assert_not_match
- Two override tests had \| (literal pipe) in ERE patterns; replaced with
plain |; persist-path-traversal rewritten to assert the warning
Signed-off-by: Niclas Overby <niclas@overby.me>
feat(rust/flatpak): Complete VM test parity (211 tests passing) and fix OSTree GVariant pipeline
All 138 sandbox-free Nix checks plus all 73 NixOS VM tests now pass.
Headline additions:
- 15 VM test categories implemented (sandbox, override, config, bundle,
build-update-repo, repair, info, history, seccomp, extensions, D-Bus
proxy, documents/permissions, remote+network, metadata validation,
misc/security)
- Portal fallback (on-disk store under $XDG_DATA_HOME/flatpak/portal/)
- --subpath, --require-version, complete subcommand, --sdk in build-finish
- --persist sandbox + override + build-finish, including CVE-2024-42472
path-traversal/symlink protections
- info --show-commit/--show-location/--show-runtime/--show-sdk/
--show-extensions/--file-access
- Bundle metadata-mismatch detection in build-import-bundle
- Repair walks the deploy tree directly so missing-metadata refs are
detected and regenerated
- update actually pulls when remote commit checksum differs
OSTree pipeline fixes uncovered by VM tests:
- create_commit now writes a real GVariant commit object instead of an
ad-hoc byte stream; parse_commit can round-trip its own output
- serialize_dirtree rewritten as proper GVariant (a(say), a(sayay))
- Summary, dirtree, and filez parsers had off-by-one bugs (string_end+1
was double-counting NUL) and missed alignment cases (a(sayay) is
alignment 1, not 8); guarded against bad framing offsets
- build_export now copies metadata into files/metadata before commit so
remote installs receive command= and other Application keys
- filez header minimum size relaxed from 28 to 24 bytes (fits empty
symlink targets without xattrs)
CLI parser fixes:
- override accepts both --flag value and --flag=value forms across all
flags; adds missing --allow, --disallow, --talk-name, --own-name,
--system-talk-name, --system-own-name and inverses; bus-name overrides
go to [Session/System Bus Policy] groups instead of [Context]
- run accepts --command=CMD in addition to --command CMD
- install_from_dir and cmd_uninstall now log history entries
- build-init/build-finish print informational messages on stderr instead
of polluting stdout
Test harness:
- libtest-nix.sh gains assert_match / assert_not_match
- Two override tests had \| (literal pipe) in ERE patterns; replaced with
plain |; persist-path-traversal rewritten to assert the warning
Signed-off-by: Niclas Overby <niclas@overby.me>
feat(rust/flatpak): Complete VM test parity (211 tests passing) and fix OSTree GVariant pipeline
All 138 sandbox-free Nix checks plus all 73 NixOS VM tests now pass.
Headline additions:
- 15 VM test categories implemented (sandbox, override, config, bundle,
build-update-repo, repair, info, history, seccomp, extensions, D-Bus
proxy, documents/permissions, remote+network, metadata validation,
misc/security)
- Portal fallback (on-disk store under $XDG_DATA_HOME/flatpak/portal/)
- --subpath, --require-version, complete subcommand, --sdk in build-finish
- --persist sandbox + override + build-finish, including CVE-2024-42472
path-traversal/symlink protections
- info --show-commit/--show-location/--show-runtime/--show-sdk/
--show-extensions/--file-access
- Bundle metadata-mismatch detection in build-import-bundle
- Repair walks the deploy tree directly so missing-metadata refs are
detected and regenerated
- update actually pulls when remote commit checksum differs
OSTree pipeline fixes uncovered by VM tests:
- create_commit now writes a real GVariant commit object instead of an
ad-hoc byte stream; parse_commit can round-trip its own output
- serialize_dirtree rewritten as proper GVariant (a(say), a(sayay))
- Summary, dirtree, and filez parsers had off-by-one bugs (string_end+1
was double-counting NUL) and missed alignment cases (a(sayay) is
alignment 1, not 8); guarded against bad framing offsets
- build_export now copies metadata into files/metadata before commit so
remote installs receive command= and other Application keys
- filez header minimum size relaxed from 28 to 24 bytes (fits empty
symlink targets without xattrs)
CLI parser fixes:
- override accepts both --flag value and --flag=value forms across all
flags; adds missing --allow, --disallow, --talk-name, --own-name,
--system-talk-name, --system-own-name and inverses; bus-name overrides
go to [Session/System Bus Policy] groups instead of [Context]
- run accepts --command=CMD in addition to --command CMD
- install_from_dir and cmd_uninstall now log history entries
- build-init/build-finish print informational messages on stderr instead
of polluting stdout
Test harness:
- libtest-nix.sh gains assert_match / assert_not_match
- Two override tests had \| (literal pipe) in ERE patterns; replaced with
plain |; persist-path-traversal rewritten to assert the warning
Signed-off-by: Niclas Overby <niclas@overby.me>