diff --git a/src/core/main.c b/src/core/main.c index c929b88db6b..1fe93a2f554 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1406,10 +1406,10 @@ static int setup_os_release(RuntimeScope scope) { } r = mkdir_parents_label(os_release_dst, 0755); - if (r < 0 && r != -EEXIST) + if (r < 0) return log_debug_errno(r, "Failed to create parent directory of %s, ignoring: %m", os_release_dst); - r = copy_file(os_release_src, os_release_dst, /* open_flags= */ 0, 0644, COPY_MAC_CREATE); + r = copy_file(os_release_src, os_release_dst, /* open_flags= */ 0, 0644, COPY_MAC_CREATE|COPY_TRUNCATE); if (r < 0) return log_debug_errno(r, "Failed to create %s, ignoring: %m", os_release_dst); diff --git a/test/units/testsuite-82.sh b/test/units/testsuite-82.sh index 9e37d0c06f6..7adee341c1e 100755 --- a/test/units/testsuite-82.sh +++ b/test/units/testsuite-82.sh @@ -92,9 +92,9 @@ elif [ -f /run/testsuite82.touch ]; then echo miep >/tmp/nextroot-lower/lower # Copy os-release away, so that we can manipulate it and check that it is updated in the propagate - # directory across soft reboots. + # directory across soft reboots. Try to cover corner cases by truncating it. mkdir -p /tmp/nextroot-lower/usr/lib - cp /etc/os-release /tmp/nextroot-lower/usr/lib/os-release + grep ID /etc/os-release >/tmp/nextroot-lower/usr/lib/os-release echo MARKER=1 >>/tmp/nextroot-lower/usr/lib/os-release cmp /etc/os-release /run/systemd/propagate/os-release (! grep -q MARKER=1 /etc/os-release)