ostree/tests
Colin Walters ed15723cd1 lib/commit: Fix hardlink checkout commit with bare-user + mod xattrs
This is more subtle fallout from:
https://github.com/ostreedev/ostree/pull/1170
AKA commit: 8fe4536257

Before, if we found a devino cache hit, we'd use it unconditionally.

Recall that `bare-user` repositories are very special in that they're the only
mode where the on disk state ("physical state") is not the "real" state. The
latter is stored in the `user.ostreemeta` xattr. (`bare-user` repos are also
highly special in that symlinks are regular files physically, but that's not
immediately relevant here).

Since we now have `bare-user-only` for the "pure unprivileged container" case,
`bare-user` should just be used for "OS builds" which have nonzero uids (and
possibly SELinux labels etc.)

In an experimental tool I'm writing "skopeo2ostree" which imports OCI images
into refs, then squashes them together into a single final commit, we lost the
the `81` group ID for `/usr/libexec/dbus-1/dbus-daemon-launch-helper`.

This happened because the commit code was loading the "physical" disk state,
where the uid/gid are zero because that's the uid I happened to be using. We
didn't just directly do the link speedup because I was using `--selinux-policy`
which caused the xattrs to change, which caused us to re-commit objects from the
physical state.

The unit test I added actually doesn't quite trigger this, but I left
it because "why not".  Really testing this requires the installed test
which uses SELinux policy from `/`.

The behavior without this fix looks like:

```
-00755 0 0     12 { [(b'user.ostreemeta', [byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x81, 0xed]), (b'security.selinux', b'system_u:object_r:lib_t:s0')] } /usr/lib/dbus-daemon-helper
```

which was obviously totally broken - we shouldn't be picking up the
`user.ostreemeta` xattr and actually committing it of course.

Closes: #1297
Approved by: jlebon
2017-10-23 17:02:28 +00:00
..
coccinelle Add Coccinelle usage: one for blacklisting, one for patch collection 2017-03-30 19:19:54 +00:00
gpg-verify-data gpg: Regenerate test data for test-gpg-verify-result 2015-03-19 12:43:04 -04:00
gpghome tests: Port to glib-tap.mk, make `make check` run all of the tests 2016-03-03 08:50:19 -05:00
installed lib/commit: Fix hardlink checkout commit with bare-user + mod xattrs 2017-10-23 17:02:28 +00:00
.gitignore create-usb: Add a create-usb command to complement OstreeRepoFinderMount 2017-09-27 14:44:00 +00:00
admin-test.sh core: Add standard SOURCE_TITLE metadata key 2017-10-23 14:19:41 +00:00
archive-test.sh repo+tests: Add [core]disable-xattrs=true, use it on overlayfs 2017-03-24 22:16:43 +00:00
basic-test.sh lib/checkout: For "process whiteouts" mode, replace directories too 2017-10-20 13:20:27 +00:00
bootloader-entries-crosscheck.py Introducing ostree-grub-generator 2016-04-04 14:19:35 +00:00
coccinelle.sh Add Coccinelle usage: one for blacklisting, one for patch collection 2017-03-30 19:19:54 +00:00
corrupt-repo-ref.js tests: Fix JavaScript tests with gjs 1.50.0 2017-09-15 18:51:43 +00:00
glib.supp glib.supp: Suppress g_task -> thread leaks 2016-07-28 10:10:17 +00:00
grub2-entries-crosscheck.py tests: Add a test script to cross-check loader config vs GRUB2 2015-05-28 14:21:30 -04:00
libostreetest.c Cope with xattr syscalls raising EOPNOTSUPP 2017-10-16 13:08:06 +00:00
libostreetest.h tests: check for relabeling rather than overlay 2017-09-30 00:05:07 +00:00
libtest-core.sh tests: Explicitly unset LANGUAGE after setting LC_ALL 2017-09-19 15:16:09 +00:00
libtest.sh tests: check for relabeling rather than overlay 2017-09-30 00:05:07 +00:00
ostree-grub-generator Introducing ostree-grub-generator 2016-04-04 14:19:35 +00:00
ostree.supp tests: Modernize valgrind infrastructure 2016-06-09 21:10:35 +00:00
pre-endian-deltas-repo-big.tar.xz deltas: Heuristically detect endianness for older deltas 2016-02-26 08:19:01 -05:00
pre-endian-deltas-repo-little.tar.xz deltas: Heuristically detect endianness for older deltas 2016-02-26 08:19:01 -05:00
pull-test.sh tests: Add test-pull-bareuseronly 2017-10-17 15:20:08 +00:00
readdir-rand.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
repo-finder-mount.c create-usb: Add a create-usb command to complement OstreeRepoFinderMount 2017-09-27 14:44:00 +00:00
test-admin-deploy-2.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-bootid-gc.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-clean.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-etcmerge-cornercases.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-grub2.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-karg.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-switch.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-syslinux.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-deploy-uboot.sh core: Add standard SOURCE_TITLE metadata key 2017-10-23 14:19:41 +00:00
test-admin-instutil-set-kargs.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-locking.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-pull-deploy-commit.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-pull-deploy-split.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-upgrade-endoflife.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-upgrade-not-backwards.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-admin-upgrade-unconfigured.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-archivez.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-auto-summary.sh tests: Remove extra $CMD_PREFIX from test-auto-summary.sh 2016-06-27 20:20:21 +00:00
test-basic-c.c tests: check for relabeling rather than overlay 2017-09-30 00:05:07 +00:00
test-basic-root.sh checkout: Merge union/add logic for copies during checkout 2017-04-25 13:52:35 +00:00
test-basic-user-only.sh tests,ci: Move "test-basic" (bare mode) to installed test 2017-09-27 13:13:14 +00:00
test-basic-user.sh lib/commit: Fix hardlink checkout commit with bare-user + mod xattrs 2017-10-23 17:02:28 +00:00
test-basic.sh tests,ci: Move "test-basic" (bare mode) to installed test 2017-09-27 13:13:14 +00:00
test-bloom.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-bsdiff.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-checksum.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-commit-sign.sh tests/commit-sign: Update a bit to more modern style 2017-09-27 19:04:11 +00:00
test-core.js tests: More fixes for gjs tests 2017-07-21 15:45:27 +00:00
test-corruption.sh fsck: Check for refs missing corresponding commit 2017-05-09 14:05:46 +00:00
test-create-usb.sh create-usb: Add a create-usb command to complement OstreeRepoFinderMount 2017-09-27 14:44:00 +00:00
test-delta.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-demo-buildsystem.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-export.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-find-remotes.sh lib/repo-refs: Include remote refs when using collections 2017-08-24 19:57:33 +00:00
test-fsck-collections.sh tests: Add integration tests for collections 2017-06-26 15:56:07 +00:00
test-gpg-signed-commit.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-gpg-verify-result.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-help.sh ostree: Describe subcommands in help output 2017-10-20 12:59:32 +00:00
test-init-collections.sh tests: Add integration tests for collections 2017-06-26 15:56:07 +00:00
test-keyfile-utils.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-libarchive-import.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-libarchive.sh libarchive: Add support for translating paths during commit 2017-08-30 14:30:30 +00:00
test-local-pull-depth.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-local-pull.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-lzma.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-mock-gio.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-mock-gio.h tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-mutable-tree.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-oldstyle-partial.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-ot-opt-utils.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-ot-tool-util.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-ot-unix-utils.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-parent.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-prune-collections.sh tests: Add integration tests for collections 2017-06-26 15:56:07 +00:00
test-prune.sh bin/prune: Add --only-branch 2017-09-18 17:20:38 +00:00
test-pull-bare.sh tests: Run pull tests for bare/bare-user 2017-07-10 14:18:18 +00:00
test-pull-bareuser.sh test-pull-bareuser.sh: This test uses bare-user, hence needs xattrs 2017-08-29 19:08:59 +00:00
test-pull-bareuseronly.sh tests: Add test-pull-bareuseronly 2017-10-17 15:20:08 +00:00
test-pull-c.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-pull-collections.sh tests: New tests for creating commits with bindings and pulling them 2017-07-06 19:08:14 +00:00
test-pull-commit-only.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-contenturl.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-corruption.sh lib: Use a common helper function to compare checksums 2017-10-17 05:06:07 +00:00
test-pull-depth.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-large-metadata.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-localcache.sh pull: mark commits from local cache as partial 2017-08-14 12:04:42 +00:00
test-pull-metalink.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-mirror-summary.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-mirrorlist.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-override-url.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-repeated.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-resume.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-subpath.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-summary-sigs.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-pull-untrusted.sh repo+tests: Add [core]disable-xattrs=true, use it on overlayfs 2017-03-24 22:16:43 +00:00
test-refs-collections.sh tests: Check "refs -c PREFIX" behavior 2017-09-07 18:49:55 +00:00
test-refs.sh Disallow refs starting with a non-letter or digit 2017-10-18 20:55:43 +00:00
test-remote-add-collections.sh tests: Add integration tests for collections 2017-06-26 15:56:07 +00:00
test-remote-add.sh tests: Port to glib-tap.mk, make `make check` run all of the tests 2016-03-03 08:50:19 -05:00
test-remote-cookies.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-remote-gpg-import.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-remote-headers.sh pull: complete detached meta fetch before scanning 2017-05-18 01:14:15 +00:00
test-remotes-config-dir.js repo: Ensure new config doesn't set remotes in separate file 2017-09-13 16:03:25 +00:00
test-repo-finder-avahi.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-repo-finder-config.c tests: drop unused variable 2017-10-12 12:53:01 +00:00
test-repo-finder-mount-integration.sh tests: Add a manual integration test for OstreeRepoFinderMount 2017-09-28 14:08:40 +00:00
test-repo-finder-mount.c tree-wide: Update to new libglnx fd APIs 2017-10-11 19:26:10 +00:00
test-repo.c tests/repo: Drop modeline from top of file 2017-09-28 14:08:40 +00:00
test-reset-nonlinear.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-rofiles-fuse.sh rofiles-fuse: also pass mode for O_RDONLY 2017-09-21 16:51:15 +00:00
test-rollsum-cli.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-rollsum.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-sizes.js tests: More fixes for gjs tests 2017-07-21 15:45:27 +00:00
test-summary-collections.sh lib/repo-refs: Include remote refs when using collections 2017-08-24 19:57:33 +00:00
test-summary-update.sh ostree/summary: Generate an ostree-metadata ref when updating summary 2017-10-02 13:39:41 +00:00
test-summary-view.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00
test-switchroot.sh test-switchroot.sh: skip if no busybox 2017-06-27 21:45:34 +00:00
test-symbols.sh Release 2017.12 2017-10-02 14:44:34 +00:00
test-sysroot-c.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-sysroot.js tests: Fix JavaScript tests with gjs 1.50.0 2017-09-15 18:51:43 +00:00
test-varint.c tree-wide: Remove Emacs modelines 2017-09-21 21:38:34 +00:00
test-xattrs.sh tree-wide: Replace archive-z2 with archive 2017-09-01 20:54:12 +00:00