aboutsummaryrefslogtreecommitdiff
path: root/resolv/tst-resolv-trailing.c
AgeCommit message (Collapse)AuthorFilesLines
2020-01-08Don’t include sys/socket.h from public headers.Zack Weinberg1-0/+1
No standard public header is required to include sys/socket.h, although some are allowed to. Several public headers need the definitions of socklen_t, struct sockaddr, and/or struct sockaddr_storage, but nothing else from sys/socket.h. We already have a single-type header for socklen_t, so this patch adds single-type headers for struct sockaddr and struct sockaddr_storage. The definition of struct sockaddr_storage is subtly different on Linux than on the Hurd; in order to not need two copies of bits/types/struct_sockaddr_storage.h, bits/sockaddr.h is now responsible for defining __ss_aligntype if ‘unsigned long int’ is not the correct definition. I also added a single-type header for struct linger, even though only sys/socket.h is expected to define that, just because all three copies of bits/socket.h were defining it exactly the same way. There would also be a case for defining it directly in sys/socket.h but this seemed tidier. I did *not* create single-type headers for struct msghdr and struct cmsghdr, because those and their helper macros are not consistent among the three copies of bits/socket.h, and, again, only sys/socket.h is expected to define them. The large number of .c files that add an `#include <sys/socket.h>` might make this look like it’s not worth doing. However, after this change, only half of the files in the glibc source tree that include netinet/in.h also need to include sys/socket.h, and only a third of the files that include netdb.h need to include sys/socket.h. Before, all of the files in both groups were getting sys/socket.h. That seems like enough justification to me. While I was at it I noticed that sys/socketvar.h is yet another backward compatibility header that does nothing but include some other header (sys/socket.h, in this case) and also doesn’t need to be system-dependent. * socket/bits/types/struct_linger.h * socket/bits/types/struct_sockaddr.h * socket/bits/types/struct_sockaddr_storage.h: New single-type headers, factored out of the various bits/socket.h headers. * include/bits/types/struct_linger.h * include/bits/types/struct_sockaddr.h * include/bits/types/struct_sockaddr_storage.h: New wrappers. * socket/Makefile (headers): Add bits/types/struct_linger.h, bits/types/struct_sockaddr.h, and bits/types/struct_sockaddr_storage.h. Alphabetize the list. * bits/socket.h, sysdeps/mach/hurd/bits/socket.h * sysdeps/unix/sysv/linux/bits/socket.h: Don’t define struct sockaddr, struct sockaddr_storage, __ss_aligntype, or struct linger here. Minimize inclusions. * sysdeps/unix/bsd/bits/sockaddr.h: Define __ss_aligntype here. * socket/sys/socket.h: Include bits/types/struct_linger.h, bits/sockaddr.h, bits/types/struct_sockaddr.h, and bits/types/struct_sockaddr_storage.h. Move inclusion of bits/socket.h below forward declaration of struct timespec, and update commentary. * inet/ifaddrs.h, socket/net/if.h * sysdeps/mach/hurd/net/if_arp.h * sysdeps/mach/hurd/net/route.h * sysdeps/unix/sysv/linux/errqueue.h * sysdeps/unix/sysv/linux/net/if_arp.h * sysdeps/unix/sysv/linux/net/route.h: Include bits/types/struct_sockaddr.h and possibly also bits/types.h, not sys/socket.h or sys/types.h. * sysdeps/unix/sysv/linux/errqueue.h: * sysdeps/unix/sysv/linux/net/route.h: Use __uint8_t and __uint32_t instead of uint8_t and uint32_t. * inet/arpa/inet.h: Include bits/types/size_t.h. * inet/netinet/in.h: Include bits/sockaddr.h, bits/types/struct_sockaddr.h, and bits/types/struct_sockaddr_storage.h, not sys/socket.h. Use __socklen_t instead of socklen_t. * inet/netinet/tcp.h: Include bits/types.h and bits/types/struct_sockaddr_storage.h, not sys/socket.h or bits/stdint-uintn.h. Use __uint8_t, __uint16_t, and __uint32_t instead of uint8_t, uint16_t and uint32_t. * inet/protocols/routed.h: Include features.h and bits/types/struct_sockaddr.h, not sys/socket.h. * resolv/netdb.h: Include bits/types/socklen_t.h. * sysdeps/unix/sysv/linux/netatalk/at.h: Don’t include sys/socket.h. * include/ifaddrs.h: Include stddef.h for size_t. * include/netdb.h: Use __socklen_t instead of socklen_t. * inet/check_pf.c, inet/gethstbynm.c, inet/gethstbynm_r.c * inet/getsourcefilter.c, inet/inet6_opt.c, inet/inet6_option.c * inet/inet6_rth.c, inet/setsourcefilter.c, inet/test-ifaddrs.c * inet/test-inet6_opt.c, inet/tst-inet6_rth.c * inet/tst-inet6_scopeid_pton.c, nis/nss_nis/nis-hosts.c * nis/nss_nisplus/nisplus-hosts.c, nscd/aicache.c, nscd/cache.c * nscd/hstcache.c, nscd/initgrcache.c, nscd/netgroupcache.c * nscd/nscd_gethst_r.c, nscd/servicescache.c, nss/digits_dots.c * nss/nss_files/files-hosts.c, nss/nss_files/files-network.c * nss/tst-nss-files-hosts-erange.c, nss/tst-nss-files-hosts-getent.c * nss/tst-nss-files-hosts-multi.c, posix/tst-getaddrinfo3.c * resolv/nss_dns/dns-network.c, resolv/resolv_conf.c * resolv/tst-bug18665-tcp.c, resolv/tst-bug18665.c * resolv/tst-inet_ntop.c, resolv/tst-inet_pton.c * resolv/tst-resolv-ai_idn-common.c, resolv/tst-resolv-basic.c * resolv/tst-resolv-edns.c, resolv/tst-resolv-network.c * resolv/tst-resolv-nondecimal.c, resolv/tst-resolv-search.c * resolv/tst-resolv-threads.c, resolv/tst-resolv-trailing.c * sunrpc/rpc_gethostbyname.c * support/support_format_address_family.c * support/support_format_addrinfo.c * support/support_format_dns_packet.c * support/support_format_hostent.c, support/support_format_netent.c * sysdeps/mach/hurd/if_index.c * sysdeps/unix/sysv/linux/check_native.c: Include sys/socket.h. * resolv/tst-resolv-binary.c: Include sys/types.h. * sysdeps/generic/sys/socketvar.h: Move to socket/sys/socketvar.h. * include/sys/socketvar.h: New wrapper. * scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES): Update.
2020-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers1-1/+1
2019-09-07Prefer https to http for gnu.org and fsf.org URLsPaul Eggert1-1/+1
Also, change sources.redhat.com to sourceware.org. This patch was automatically generated by running the following shell script, which uses GNU sed, and which avoids modifying files imported from upstream: sed -ri ' s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g ' \ $(find $(git ls-files) -prune -type f \ ! -name '*.po' \ ! -name 'ChangeLog*' \ ! -path COPYING ! -path COPYING.LIB \ ! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \ ! -path manual/texinfo.tex ! -path scripts/config.guess \ ! -path scripts/config.sub ! -path scripts/install-sh \ ! -path scripts/mkinstalldirs ! -path scripts/move-if-change \ ! -path INSTALL ! -path locale/programs/charmap-kw.h \ ! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \ ! '(' -name configure \ -execdir test -f configure.ac -o -f configure.in ';' ')' \ ! '(' -name preconfigure \ -execdir test -f preconfigure.ac ';' ')' \ -print) and then by running 'make dist-prepare' to regenerate files built from the altered files, and then executing the following to cleanup: chmod a+x sysdeps/unix/sysv/linux/riscv/configure # Omit irrelevant whitespace and comment-only changes, # perhaps from a slightly-different Autoconf version. git checkout -f \ sysdeps/csky/configure \ sysdeps/hppa/configure \ sysdeps/riscv/configure \ sysdeps/unix/sysv/linux/csky/configure # Omit changes that caused a pre-commit check to fail like this: # remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines git checkout -f \ sysdeps/powerpc/powerpc64/ppc-mcount.S \ sysdeps/unix/sysv/linux/s390/s390-64/syscall.S # Omit change that caused a pre-commit check to fail like this: # remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-01-21CVE-2016-10739: getaddrinfo: Fully parse IPv4 address strings [BZ #20018]Florian Weimer1-0/+136
The IPv4 address parser in the getaddrinfo function is changed so that it does not ignore trailing whitespace and all characters after it. For backwards compatibility, the getaddrinfo function still recognizes legacy name syntax, such as 192.000.002.010 interpreted as 192.0.2.8 (octal). This commit does not change the behavior of inet_addr and inet_aton. gethostbyname already had additional sanity checks (but is switched over to the new __inet_aton_exact function for completeness as well). To avoid sending the problematic query names over DNS, commit 6ca53a2453598804a2559a548a08424fca96434a ("resolv: Do not send queries for non-host-names in nss_dns [BZ #24112]") is needed.