diff options
author | Jonathan Lebon <jonathan@jlebon.com> | 2021-10-04 16:54:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-04 16:54:44 -0400 |
commit | 488edf6e2643f4ffecc8bd1c999a9da2447d9a6c (patch) | |
tree | 6a25a80b7ae59c7d33463338111786440743cb48 | |
parent | 5bf4b1dabc12d6caee4f4899c9388a48bb4a72a3 (diff) | |
parent | e6a560b40797324aa8b90e7100c6d50bff91f14d (diff) | |
download | ostree-488edf6e2643f4ffecc8bd1c999a9da2447d9a6c.tar.gz |
Merge pull request #2453 from cgwalters/etc-ignore-sockets
-rw-r--r-- | src/libostree/ostree-sysroot-deploy.c | 4 | ||||
-rwxr-xr-x | tests/kolainst/destructive/staged-deploy.sh | 20 | ||||
-rwxr-xr-x | tests/test-admin-deploy-etcmerge-cornercases.sh | 7 |
3 files changed, 28 insertions, 3 deletions
diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c index 6a13a41b..a8bf9f44 100644 --- a/src/libostree/ostree-sysroot-deploy.c +++ b/src/libostree/ostree-sysroot-deploy.c @@ -488,9 +488,7 @@ copy_modified_config_file (int orig_etc_fd, } else { - return glnx_throw (error, - "Unsupported non-regular/non-symlink file in /etc '%s'", - path); + ot_journal_print (LOG_INFO, "Ignoring non-regular/non-symlink file found during /etc merge: %s", path); } return TRUE; diff --git a/tests/kolainst/destructive/staged-deploy.sh b/tests/kolainst/destructive/staged-deploy.sh index f55bb2c8..baadb3d8 100755 --- a/tests/kolainst/destructive/staged-deploy.sh +++ b/tests/kolainst/destructive/staged-deploy.sh @@ -12,6 +12,23 @@ case "${AUTOPKGTEST_REBOOT_MARK:-}" in test -f /run/systemd/generator/multi-user.target.wants/ostree-finalize-staged.path test -f /run/systemd/generator/local-fs.target.requires/ostree-remount.service + cat >/etc/systemd/system/sock-to-ignore.socket << 'EOF' +[Socket] +ListenStream=/etc/sock-to-ignore +EOF + cat >/etc/systemd/system/sock-to-ignore.service << 'EOF' +[Service] +ExecStart=/bin/cat +EOF + # policy denies systemd listening on a socket in /etc (arguably correctly) + setenforce 0 + systemctl daemon-reload + systemctl start --now sock-to-ignore.socket + setenforce 1 + + test -S /etc/sock-to-ignore + mkfifo /etc/fifo-to-ignore + # Initial cleanup to handle the cosa fast-build case ## TODO remove workaround for https://github.com/coreos/rpm-ostree/pull/2021 mkdir -p /var/lib/rpm-ostree/history @@ -54,6 +71,9 @@ case "${AUTOPKGTEST_REBOOT_MARK:-}" in # Assert that the previous boot had a journal entry for it journalctl -b "-1" -u ostree-finalize-staged.service > svc.txt assert_file_has_content svc.txt 'Bootloader updated; bootconfig swap: yes;.*deployment count change: 1' + # Also validate ignoring socket and fifo + assert_file_has_content svc.txt 'Ignoring.*during /etc merge:.*sock-to-ignore' + assert_file_has_content svc.txt 'Ignoring.*during /etc merge:.*fifo-to-ignore' rm -f svc.txt # And there should not be a staged deployment test '!' -f /run/ostree/staged-deployment diff --git a/tests/test-admin-deploy-etcmerge-cornercases.sh b/tests/test-admin-deploy-etcmerge-cornercases.sh index 98e2bbe6..ef4ddeec 100755 --- a/tests/test-admin-deploy-etcmerge-cornercases.sh +++ b/tests/test-admin-deploy-etcmerge-cornercases.sh @@ -51,6 +51,9 @@ chmod 700 ${etc}/a/long/dir/forking # Symlink to nonexistent path, to ensure we aren't walking symlinks ln -s no-such-file ${etc}/a/link-to-no-such-file +# fifo which should be ignored +mkfifo "${etc}/fifo-to-ignore" + # Remove a directory rm ${etc}/testdirectory -rf @@ -66,6 +69,10 @@ newetc=${newroot}/etc assert_file_has_content ${newroot}/usr/etc/NetworkManager/nm.conf "a default daemon file" assert_file_has_content ${newetc}/NetworkManager/nm.conf "a modified config file" +if test -e "${newetc}"/fifo-to-ignore; then + fatal "Should not have copied fifo!" +fi + assert_file_has_mode() { stat -c '%a' $1 > mode.txt if ! grep -q -e "$2" mode.txt; then |