Hi Peter, On Thu, Dec 21, 2017 at 01:48:11PM +0300, Peter Mamonov wrote: > On Wed, Dec 20, 2017 at 01:48:14PM +0300, Peter Mamonov wrote: > > Hi, > > > > The md5sum command reports wrong sum for a file named 4k.bin and, I guess, for > > other files named alike. Here are the commands to reproduce the bug: > > The problem lays in __do_digest() function: > - it initializes variables `start` and `size` at commands/digest.c:38 > - then it calls parse_area_spec(*argv, &start, &size) at commands/digest.c:42 > - parse_area_spec() returns error as it should, however it changes the value > of the `start` at lib/misc.c:87. > - this causes digest algo to skip leading 4k of the data from the file. > > I'm not quite sure what is the best solution: > - prevent parse_area_spec() from setting start if it fails? > - reinitialize start/size after unsuccessfull call to parse_area_spec()? preventing parse_area_spec() from modifying start and size if it fails seems like a good idea. However, this doesn't solve the problem, does it? parse_area_spec() only fails because the dot in 4k.bin is not valid, but if you name the file only '4k' then parse_area_spec() won't fail. The problem is that we cannot know whether '4k' is a file or an area. Right now I have no good idea how to make the command nonambiguous, but this will require an incompatible change to the commands arguments. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox