From 289b1767182982dfb6912e64481150697ba93e4d Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Tue, 13 Jun 2017 14:22:04 +0300 Subject: filemap: check if dest is written for every block If lenght parameter is provided to sparse_copy call it's mandatory to check if the output file is fully written after reading unmapped block from input file. If it's not done then sparse_copy can write more data than specified length. Signed-off-by: Ed Bartosh Signed-off-by: Richard Purdie --- scripts/lib/wic/filemap.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/lib/wic/filemap.py b/scripts/lib/wic/filemap.py index 8719f443c5..764dbbe588 100644 --- a/scripts/lib/wic/filemap.py +++ b/scripts/lib/wic/filemap.py @@ -563,6 +563,13 @@ def sparse_copy(src_fname, dst_fname, skip=0, seek=0, start = skip fmap._f_image.seek(start, os.SEEK_SET) + + written += start - skip - written + if length and written >= length: + dst_file.seek(seek + length, os.SEEK_SET) + dst_file.close() + return + dst_file.seek(seek + start - skip, os.SEEK_SET) chunk_size = 1024 * 1024 -- cgit 1.2.3-korg