]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: copy os-release with COPY_TRUNCATE
authorLuca Boccassi <bluca@debian.org>
Fri, 11 Aug 2023 13:42:02 +0000 (14:42 +0100)
committerLuca Boccassi <bluca@debian.org>
Fri, 11 Aug 2023 16:14:09 +0000 (17:14 +0100)
Otherwise if the os-release file shrinks between updates, there
will be a merge of the two.
Also remove redundant ENOENT check.

Follow-up for 3f37a82545d461ab

src/core/main.c
test/units/testsuite-82.sh

index c929b88db6bd19bcbe536d50c196cc18a9f22b1c..1fe93a2f5544695a734b9420914ccf045dea7ef9 100644 (file)
@@ -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);
 
index 9e37d0c06f6ca66663b93d17235e62e8f431bf74..7adee341c1e001e9ea65baa3ca96fec8e3448657 100755 (executable)
@@ -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)