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

Heiko Schocher hs at denx.de
Mon Feb 10 07:28:51 CET 2014


Hello Marek,

Am 08.02.2014 15:16, schrieb Marek Vasut:
> 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 ;-)

Heh.. good catch! I only moved this function from tools/fit_image.c
to a common place, so other function can use it too ... but I just
noticed, I do not really need this ...

>> +		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.
> [...]

Seems this function needs a rework! I drop this from my patch, as I
do not need it.

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list