From: Luca Boccassi Date: Mon, 12 Jun 2023 22:47:03 +0000 (+0100) Subject: portable: do not extract empty unit files X-Git-Tag: v254-rc1~226^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5a41a142bab988bba339d7256b11a99edd1ace49;p=thirdparty%2Fsystemd.git portable: do not extract empty unit files Bare minimum sanity check, an empty unit is an invalid unit so skip it early. --- diff --git a/src/portable/portable.c b/src/portable/portable.c index 1c313775678..6b3fd004407 100644 --- a/src/portable/portable.c +++ b/src/portable/portable.c @@ -255,6 +255,7 @@ static int extract_now( _cleanup_(portable_metadata_unrefp) PortableMetadata *m = NULL; _cleanup_(mac_selinux_freep) char *con = NULL; _cleanup_close_ int fd = -EBADF; + struct stat st; if (!unit_name_is_valid(de->d_name, UNIT_NAME_ANY)) continue; @@ -275,6 +276,17 @@ static int extract_now( continue; } + /* Reject empty files, just in case */ + if (fstat(fd, &st) < 0) { + log_debug_errno(errno, "Failed to stat unit file '%s', ignoring: %m", de->d_name); + continue; + } + + if (st.st_size <= 0) { + log_debug("Unit file '%s' is empty, ignoring.", de->d_name); + continue; + } + #if HAVE_SELINUX /* The units will be copied on the host's filesystem, so if they had a SELinux label * we have to preserve it. Copy it out so that it can be applied later. */