From: Theodore Ts'o Date: Mon, 2 Dec 2013 18:14:43 +0000 (-0500) Subject: e2image: pass the correct size write_header X-Git-Tag: android-x86-6.0-r1~26^2~115 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4c2ae57d38f60fa74ecd5bb681c8fb80fba59b6a;p=android-x86%2Fexternal-e2fsprogs.git e2image: pass the correct size write_header Commit bf0449b1a654, which added the ability to write qcow2 files, generalized the write_header() file to take the size of the header structure which it writes out. Unfortunately, it changed the call which supported original e2image format to pass in fs->blocksize, instead of the actual size of the e2image header structure (which is substantially smaller than fs->blocksize). This meant that we copied in stack garbage into the e2image file, and it made valgrind quite unhappy. Signed-off-by: "Theodore Ts'o" --- diff --git a/misc/e2image.c b/misc/e2image.c index 4a5bb22d..aa363fbc 100644 --- a/misc/e2image.c +++ b/misc/e2image.c @@ -165,7 +165,7 @@ static void write_image_file(ext2_filsys fs, int fd) struct stat st; errcode_t retval; - write_header(fd, NULL, fs->blocksize, fs->blocksize); + write_header(fd, NULL, sizeof(struct ext2_image_hdr), fs->blocksize); memset(&hdr, 0, sizeof(struct ext2_image_hdr)); hdr.offset_super = ext2fs_llseek(fd, 0, SEEK_CUR); @@ -214,7 +214,7 @@ static void write_image_file(ext2_filsys fs, int fd) memcpy(hdr.fs_uuid, fs->super->s_uuid, sizeof(hdr.fs_uuid)); hdr.image_time = time(0); - write_header(fd, &hdr, fs->blocksize, fs->blocksize); + write_header(fd, &hdr, sizeof(struct ext2_image_hdr), fs->blocksize); } /*