vmspawn: fix alignment of merged initrd

Follow-up for 811ad9e6b2.

Fixes CID#1534481.
This commit is contained in:
Yu Watanabe
2024-02-15 09:11:55 +01:00
committed by Lennart Poettering
parent 9a07df3bcd
commit 8c3f988880
+7 -2
View File
@@ -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)