Subject: Re: bin/23362: usermod doesn't check for overflow of uid/gid
To: None <netbsd-bugs@netbsd.org>
From: David Laight <david@l8s.co.uk>
List: netbsd-bugs
Date: 11/03/2003 20:03:42
> >Synopsis:       usermod doesn't check for overflow of uid/gid
...
> usermod uses atoi() to parse its arguments. atoi() shouldn't be used in
> *any* half-serious program because it has no defined indicator for any
> errors.
> 
> >How-To-Repeat:
> 
> # usermod -u 10000000000000 juser
> $ id juser
> uid=2147483647(juser) gid=1(users) groups=1(users)

See: http://www.opengroup.org/onlinepubs/007904975/xrat/xcu_chap01.html#tag_02_01_07_03

In particular the last part of the paragraph which says:

    The ISO C standard requires that a C compiler must issue a diagnostic
    for constants that are too large to represent.  Most standard utilities
    are not required to issue these diagnostics; for example, the command:

	diff -C 2147483648 file1 file2

    has undefined behavior, and the diff utility is not required to issue a
    diagnostic even if the number 2147483648 cannot be represented.

So it isn't necessary to make every utility check for numeric input
overflow.

	David

-- 
David Laight: david@l8s.co.uk