[U-Boot] [PATCH 6/7] tools, fit: add fit_info host command

Marek Vasut marex at denx.de
Sat Feb 8 15:16:26 CET 2014


On Saturday, January 25, 2014 at 07:44:28 AM, Heiko Schocher wrote:
> add fit_info command to the host tools. This command prints
> the name, offset and the len from a property from a node in
> a fit file. This info can be used to extract a properties
> data with linux tools, for example "dd".
> 
> Signed-off-by: Heiko Schocher <hs at denx.de>

[...]

> +int mmap_fdt(char *cmdname, const char *fname, void **blobp,
> +		struct stat *sbuf)
> +{
> +	void *ptr;
> +	int fd;
> +
> +	/* Load FIT blob into memory (we need to write hashes/signatures) */
> +	fd = open(fname, O_RDWR | O_BINARY);
> +
> +	if (fd < 0) {
> +		fprintf(stderr, "%s: Can't open %s: %s\n",
> +			cmdname, fname, strerror(errno));
> +		unlink(fname);

Are you sure about this unlink() call here ? The unlink() might delete the file, 
dunno if that was intended ;-)

> +		return -1;
> +	}
> +
> +	if (fstat(fd, sbuf) < 0) {
> +		fprintf(stderr, "%s: Can't stat %s: %s\n",
> +			cmdname, fname, strerror(errno));
> +		unlink(fname);
> +		return -1;
> +	}
> +
> +	ptr = mmap(0, sbuf->st_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
> +	if (ptr == MAP_FAILED) {
> +		fprintf(stderr, "%s: Can't read %s: %s\n",
> +			cmdname, fname, strerror(errno));
> +		unlink(fname);

Here this might be a problem ;-)

Also, make sure to set errno = 0 before mmap() and check the errno afterwards 
here too.
[...]
Best regards,
Marek Vasut


More information about the U-Boot mailing list