From: Jim Meyering Date: Mon, 22 May 2006 13:31:28 GMT Subject: Re: avoid atoi, when possible; int overflow -> heap corruption Message-ID: <878xoufaof.fsf@rho.meyering.net> In-Reply-To: <118833cc0605220616t75a182b1oa404d5efe8a1f5d9@mail.gmail.com> "Morten Welinder" wrote: >> There are about 20 uses of atoi, and most calls can return >> a usable result in spite of an invalid input -- just because >> atoi returns the same thing for "99" as "99-and-any-suffix". >> It would be better not to ignore invalid inputs. > > atoi has undefined behaviour for "99-and-any-suffix". You might > get lucky and get back 99, but you might also get a random value > or a core dump. I've never heard of that. POSIX says that atoi(str) is equivalent to: (int) strtol(str, (char **)NULL, 10) except that the handling of errors may differ. If the value cannot be represented, the behavior is undefined. Since strtol works fine with such a suffix, and since 99 can be represented, I don't see why there would be any undefined behavior. Do you know of an implementation for which `atoi ("99-and-any-suffix")' does anything other than return 99?