From: Yu Watanabe Date: Thu, 15 Feb 2024 01:44:21 +0000 (+0900) Subject: vmspawn: fix alignment of merged initrd X-Git-Tag: v256-rc1~852 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8c3f988880da2a69b95f21a2cee69365437f9f61;p=thirdparty%2Fsystemd.git vmspawn: fix alignment of merged initrd Follow-up for 811ad9e6b2b243428165c239aeb4791bc65b93dd. Fixes CID#1534481. --- diff --git a/src/vmspawn/vmspawn.c b/src/vmspawn/vmspawn.c index 116f0143cde..dc796e5bbf1 100644 --- a/src/vmspawn/vmspawn.c +++ b/src/vmspawn/vmspawn.c @@ -920,10 +920,15 @@ static int merge_initrds(char **ret) { if (ofd < 0) return log_error_errno(errno, "Failed to create regular file %s: %m", merged_initrd); - size_t total_size = 0; STRV_FOREACH(i, arg_initrds) { _cleanup_close_ int ifd = -EBADF; - size_t to_seek = (4 - (total_size % 4)) % 4; + off_t off, to_seek; + + off = lseek(ofd, 0, SEEK_CUR); + if (off < 0) + return log_error_errno(errno, "Failed to get file offset of %s: %m", merged_initrd); + + to_seek = (4 - (off % 4)) % 4; /* seek to assure 4 byte alignment for each initrd */ if (to_seek != 0 && lseek(ofd, to_seek, SEEK_CUR) < 0)