]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
repart: Make sure we seek to beginning of partition target before copy
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 16 Mar 2023 21:10:50 +0000 (22:10 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 16 Mar 2023 21:10:50 +0000 (22:10 +0100)
src/partition/repart.c

index 2b1fbbdae2d4fad1568365ebeb7534369df76bed..e63146499841ca0b306506522b0d392e3a31ed04 100644 (file)
@@ -3266,6 +3266,9 @@ static int partition_target_sync(Context *context, Partition *p, PartitionTarget
                 if (lseek(whole_fd, p->offset, SEEK_SET) == (off_t) -1)
                         return log_error_errno(errno, "Failed to seek to partition offset: %m");
 
+                if (lseek(t->fd, 0, SEEK_SET) == (off_t) -1)
+                        return log_error_errno(errno, "Failed to seek to start of temporary file: %m");
+
                 r = copy_bytes(t->fd, whole_fd, UINT64_MAX, COPY_REFLINK|COPY_HOLES|COPY_FSYNC);
                 if (r < 0)
                         return log_error_errno(r, "Failed to copy bytes to partition: %m");