On Wed, 01/13 12:13, Alberto Garcia wrote: > On Wed 13 Jan 2016 12:02:00 PM CET, Fam Zheng wrote: > > >> > Check the number range so this case is catched and reported. > >> > >> I still don't know why qemu_opt_get_number() convert silently > >> negative numbers into positive ones, shouldn't it just fail with an > >> "invalid parameter" error? > > > > Because the parsing is done with strtoull(3) and unfortunately its man > > page says "negative values are considered valid input and are silently > > converted to the equivalent unsigned long int value." > > I see... parse_uint() from cutils.c handles that by making an explicit > check for negative numbers. It probably makes sense to apply the same > solution (or even merge the code to the extent to which it's possible). > > I also noticed that there's a couple of places where we're calling > qemu_opt_get_number() passing -1 as default value, so maybe that API > needs to be reviewed anyway.
Those callers rely on casting preserves the MSB as the sign, but that's ugly. Anyway I'd leave the API change for a separate series and keep this patch local to fix this particular regression. :) Fam