Re: [PATCH 00/14] numparse module: systematically tighten up integer parsing
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:04:12
Jeff King [off-list ref] writes:
I wondered if we could do away with the radix entirely. Wouldn't we be asking for base 10 most of the time? Of course, your first few patches show octal parsing, but I wonder if we should actually have a separate parse_mode() for that, since that seems to be the general reason for doing octal parsing. 100000644 does not overflow an int, but it is hardly a reasonable mode.
True.
I also wondered if we could get rid of NUM_SIGN in favor of just having the type imply it (e.g., convert_l would always allow negative numbers, whereas convert_ul would not). But I suppose there are times when we end up using an "int" to store an unsigned value for a good reason (e.g., "-1" is a sentinel value, but we expect only positive values from the user). So that might be a bad idea.
Yeah, there is a reason why ssize_t exists.
IMHO most of the tightening happening here is a good thing, and means we are more likely to notice mistakes rather than silently doing something stupid.
I do like the general idea of making sure we avoid use of bare atoi() and unchecked use of strtol() and such, and have a set of well defined helper functions to perform the common checks, exactly for the reason you said.