mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
tools: mkimage: Call verify_header after writing image to disk
If image backend provides verify_header callback then call it after writing image to disk. This ensures that written image is correct. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
3548903fc8
commit
d3b1ca21e2
1 changed files with 41 additions and 0 deletions
|
@ -341,6 +341,44 @@ static void process_args(int argc, char **argv)
|
|||
usage("Missing output filename");
|
||||
}
|
||||
|
||||
static void verify_image(const struct image_type_params *tparams)
|
||||
{
|
||||
struct stat sbuf;
|
||||
void *ptr;
|
||||
int ifd;
|
||||
|
||||
ifd = open(params.imagefile, O_RDONLY | O_BINARY);
|
||||
if (ifd < 0) {
|
||||
fprintf(stderr, "%s: Can't open %s: %s\n",
|
||||
params.cmdname, params.imagefile,
|
||||
strerror(errno));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (fstat(ifd, &sbuf) < 0) {
|
||||
fprintf(stderr, "%s: Can't stat %s: %s\n",
|
||||
params.cmdname, params.imagefile, strerror(errno));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
params.file_size = sbuf.st_size;
|
||||
|
||||
ptr = mmap(0, params.file_size, PROT_READ, MAP_SHARED, ifd, 0);
|
||||
if (ptr == MAP_FAILED) {
|
||||
fprintf(stderr, "%s: Can't map %s: %s\n",
|
||||
params.cmdname, params.imagefile, strerror(errno));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (tparams->verify_header((unsigned char *)ptr, params.file_size, ¶ms) != 0) {
|
||||
fprintf(stderr, "%s: Failed to verify header of %s\n",
|
||||
params.cmdname, params.imagefile);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
(void)munmap(ptr, params.file_size);
|
||||
(void)close(ifd);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int ifd = -1;
|
||||
|
@ -703,6 +741,9 @@ int main(int argc, char **argv)
|
|||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (tparams->verify_header)
|
||||
verify_image(tparams);
|
||||
|
||||
exit (EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue