diff options
author | Ed Bartosh <ed.bartosh@linux.intel.com> | 2017-06-13 14:22:04 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-06-14 10:18:21 +0100 |
commit | 289b1767182982dfb6912e64481150697ba93e4d (patch) | |
tree | 2041a942657fc8543e233446c5df5293884d6aa1 /scripts/lib | |
parent | 08e2f4e59816c5757686255b267b08cbc46fbd95 (diff) | |
download | openembedded-core-289b1767182982dfb6912e64481150697ba93e4d.tar.gz openembedded-core-289b1767182982dfb6912e64481150697ba93e4d.tar.bz2 openembedded-core-289b1767182982dfb6912e64481150697ba93e4d.zip |
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 <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-rw-r--r-- | scripts/lib/wic/filemap.py | 7 |
1 files changed, 7 insertions, 0 deletions
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 |