glibc/inet
Joseph Myers a3708cf6b0 Avoid use of atoi in some places in libc
This patch is split out of
<https://sourceware.org/pipermail/libc-alpha/2022-December/144122.html>.

atoi has undefined behavior on out-of-range input, which makes it
problematic to use anywhere in glibc that might be processing input
out-of-range for atoi but not specified to produce undefined behavior
for the function calling atoi.  Change some uses of atoi to call
strtol instead; this avoids the undefined behavior, though there is no
guarantee that the overflow handling of strtol is really right in
those places either.  This also serves to avoid localplt test failures
given an installed header redirection for strtol (which means that the
call from the inline atoi implementation doesn't end up at a hidden
alias from libc_hidden_proto).

Certainly, the use of atoi is questionable in argp-help.c (shared with
gnulib, so shouldn't depend on glibc implementation details, and
processing user-provided input), and maybe also in argp-parse.c (I'm
not sure what that code in argp-parse.c is meant to be used for).  I
also changed inet/rexec.c and resolv/res_init.c similarly to use
strtol to avoid such localplt failures, although given those files (in
those versions) are only used in glibc it's not problematic for them
to rely on the specific behavior of glibc's atoi on out-of-range input
(in the absence of compiler optimizations based on the undefined
behavior) in the same way it's problematic for gnulib code to do so.

There may be other uses of atoi (or atol or atoll), in any of glibc's
installed code, for which it would also be appropriate to avoid the
undefined behavior on out-of-range input; this patch only fixes the
specific cases needed to avoid localplt failures.

Tested for x86_64.
2022-12-19 14:45:44 +00:00
..
arpa Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
netinet Move ip_mreqn structure from Linux to generic 2022-08-15 22:43:15 +02:00
protocols Installed-header hygiene (BZ#20366): conditionally defined structures. 2016-09-23 08:43:56 -04:00
rpc Move <rpc/netdb.h> from sunrpc to inet 2020-07-17 15:19:35 +02:00
aliases.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
bindresvport.c Move non-deprecated RPC-related functions from sunrpc to inet 2020-07-08 17:25:57 +02:00
bug-if1.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
check_native.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
check_pf.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
deadline.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
etc.rpc Move non-deprecated RPC-related functions from sunrpc to inet 2020-07-08 17:25:57 +02:00
ether_aton_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ether_aton.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ether_hton.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ether_line.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ether_ntoa_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ether_ntoa.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ether_ntoh.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getaliasent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getaliasent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getaliasname_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getaliasname.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstbyad_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstbyad.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstbynm2_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstbynm2.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstbynm_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstbynm.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gethstent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getipv4sourcefilter.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnameinfo.c inet: Return EAI_MEMORY when nrl_domainname() fails to allocate memory 2022-03-08 12:51:29 -03:00
getnetbyad_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetbyad.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetbynm_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetbynm.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetgrent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getnetgrent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getproto_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getproto.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getprtent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getprtent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getprtname_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getprtname.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getrpcbyname_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getrpcbyname.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getrpcbynumber_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getrpcbynumber.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getrpcent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getrpcent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getservent_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getservent.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getsourcefilter.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getsrvbynm_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getsrvbynm.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getsrvbypt_r.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
getsrvbypt.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
herrno-loc.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
herrno.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
htonl.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
htons.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
htontest.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
idna_name_classify.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
idna.c Use PTR_MANGLE and PTR_DEMANGLE unconditionally in C sources 2022-10-18 17:04:10 +02:00
if_index.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ifaddrs.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ifaddrs.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ifreq.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
in6_addr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
inet6_opt.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
inet6_option.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
inet6_rth.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
inet6_scopeid_pton.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
inet_lnaof.c Consistently use uintN_t not u_intN_t everywhere. 2017-08-07 19:55:34 +00:00
inet_mkadr.c inet: Remove SCCS keywords 2016-04-28 12:53:50 +02:00
inet_net.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
inet_netof.c Consistently use uintN_t not u_intN_t everywhere. 2017-08-07 19:55:34 +00:00
inet_ntoa.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
Makefile configure: Use -Wno-ignored-attributes if compiler warns about multiple aliases 2022-11-01 09:51:06 -03:00
net-internal.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
netgroup.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
rcmd.c inet: Turn __ivaliduser into a compatibility symbol 2022-08-10 08:40:15 +02:00
rexec.c Avoid use of atoi in some places in libc 2022-12-19 14:45:44 +00:00
ruserpass.c inet: Use 64 bit stat for ruserpass (BZ# 29210) 2022-06-01 13:23:16 -03:00
setipv4sourcefilter.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
setsourcefilter.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test_ifindex.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-hnto-types.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-ifaddrs.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-inet6_opt.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-checks-posix.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-checks.c inet: Make IN6_IS_ADDR_UNSPECIFIED etc. usable with POSIX [BZ #16421] 2016-12-09 11:27:44 +01:00
tst-deadline.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-ether_aton.c Modify several tests to use test-skeleton.c 2015-08-06 02:59:04 -04:00
tst-ether_line.c
tst-gethnm.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-getni1.c
tst-getni2.c
tst-idna_name_classify.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-if_index-long.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-inet6_rth.c
tst-inet6_scopeid_pton.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-network.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-ntoa.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-sockaddr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
Versions Add missing symbols to Version files 2021-06-02 07:32:19 +02:00