Use strtoq() instead of strtol() so that large inums, and sizes can be
specified. Not fixed: specification of large uids and gids; silent truncation of unrepresentable values.
This commit is contained in:
parent
ea5256699d
commit
9192bbf46f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=15102
@ -76,12 +76,12 @@ static PLAN *palloc __P((enum ntype, int (*) __P((PLAN *, FTSENT *))));
|
||||
* find_parsenum --
|
||||
* Parse a string of the form [+-]# and return the value.
|
||||
*/
|
||||
static long
|
||||
static long long
|
||||
find_parsenum(plan, option, vp, endch)
|
||||
PLAN *plan;
|
||||
char *option, *vp, *endch;
|
||||
{
|
||||
long value;
|
||||
long long value;
|
||||
char *endchar, *str; /* Pointer to character ending conversion. */
|
||||
|
||||
/* Determine comparison from leading + or -. */
|
||||
@ -101,11 +101,11 @@ find_parsenum(plan, option, vp, endch)
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert the string with strtol(). Note, if strtol() returns zero
|
||||
* Convert the string with strtoq(). Note, if strtoq() returns zero
|
||||
* and endchar points to the beginning of the string we know we have
|
||||
* a syntax error.
|
||||
*/
|
||||
value = strtol(str, &endchar, 10);
|
||||
value = strtoq(str, &endchar, 10);
|
||||
if (value == 0 && endchar == str)
|
||||
errx(1, "%s: %s: illegal numeric value", option, vp);
|
||||
if (endchar[0] && (endch == NULL || endchar[0] != *endch))
|
||||
|
Loading…
Reference in New Issue
Block a user