Florian Weimer
a830473081
resolv: __resolv_conf_attach must not free passed conf object [BZ #22096 ]
2017-09-06 15:32:43 +02:00
Florian Weimer
5670c4ab25
resolv: Fix memory leak with OOM during resolv.conf parsing [BZ #22095 ]
2017-09-06 15:20:25 +02:00
Florian Weimer
c77eb96925
nss_dns: Remove dead PTR IPv4-to-IPv6 mapping code
2017-09-06 15:11:44 +02:00
Florian Weimer
5e9c4d17fe
tst-res_use_inet6: Enhance test to cover IPv4-to-IPv6 address mapping
...
This requires more control over the response data, so it is now
determined by flags embedded in the query name.
2017-09-06 13:45:19 +02:00
Samuel Thibault
6547ec0ad8
hurd: fix resolv/tst-resolv-res_init-skeleton.c build
...
* resolv/tst-resolv-res_init-skeleton.c (run_res_init)
[!CLONE_NEWUTS]: Fail as unsupported if hostname is not NULL.
2017-09-03 19:44:07 +02:00
Florian Weimer
f4a6be2582
getaddrinfo: Fix error handling in gethosts [BZ #21915 ] [BZ #21922 ]
...
The old code uses errno as the primary indicator for success or
failure. This is wrong because errno is only set for specific
combinations of the status return value and the h_errno variable.
2017-09-01 09:34:29 +02:00
Florian Weimer
59bd52b087
resolv: Remove internal_function attribute
2017-08-31 16:07:52 +02:00
Adhemerval Zanella
19926de954
Consolidate non cancellable writev call
...
This patch consolidates all the non cancellable writev calls to use
the __writev_nocancel identifier. For non cancellable targets it will
be just a macro to call the default respective symbol while on Linux
will be a internal one.
Checked on x86_64-linux-gnu, x86_64-linux-gnu-x32, and i686-linux-gnu.
* gmon/gmon.c (write_hist): Replace writev_not_cancel_no_status with
__writev_nocancel_nostatus.
(write_call_graph): Likewise.
(write_bb_counts): Likewise.
* resolv/herror.c (herror): Likewise.
* sysdeps/generic/not-cancel.h (writev_not_cancel_no_status): Remove
macro.
(__writev_nocancel_nostatus): New macro.
* sysdeps/unix/sysv/linux/not-cancel.h (writev_not_cancel_no_status):
Remove macro.
(__writev_nocancel_nostatus): New function.
2017-08-21 15:37:45 -03:00
Adhemerval Zanella
c181840c93
Consolidate non cancellable close call
...
This patch consolidates all the non cancellable close calls to use
the __close_nocancel{_nostatus} identifier. For non cancellable targets
it will be just a macro to call the default respective symbol while on Linux
will be a internal one.
Also, since it is used on libcrypto it is also exported in GLIBC_PRIVATE
namespace.
Checked on x86_64-linux-gnu, x86_64-linux-gnu-x32, and i686-linux-gnu.
* sysdeps/generic/not-cancel.h (close_not_cancel): Remove macro.
(close_not_cancel_no_status): Likewise.
(__close_nocancel): New macro.
(__close_nocancel_no_status): Likewise.
* sysdeps/unix/sysv/linux/not-cancel.h (__close_nocancel): Remove
macro.
(close_not_cancel): Likewise.
(close_not_cancel_no_status): Likewise.
(__close_nocancel): New prototype.
(__close_nocancel_no_status): New function.
* sysdeps/unix/sysv/linux/close.c (__close_nocancel): New function.
* catgets/open_catalog.c (__open_catalog): Replace
close_not_cancel{_no_status) with __close_nocancel{_nostatus}.
* gmon/gmon.c (write_gmon): Likewise.
* iconv/gconv_cache.c (__gconv_load_cache): Likewise.
* intl/loadmsgcat.c (close): Likewise.
* io/ftw.c (open_dir_stream): Likewise.
(ftw_startup): Likewise.
* libio/fileops.c (_IO_file_open): Likewise.
(_IO_file_close_mmap): Likewise.
(_IO_file_close): Likewise.
* libio/iopopen.c (_IO_dup2): Likewise.
* locale/loadarchive.c (_nl_load_locale_from_archive): Likewise.
* locale/loadlocale.c (_nl_load_locale): Likewise.
* login/utmp_file.c (pututline_file): Likewise.
(endutent_file): Likewise.
* misc/daemon.c (daemon): Likewise.
* nscd/nscd_getai.c (__nscd_getai): Likewise.
* nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise.
* nscd/nscd_gethst_r.c (nscd_gethst_r): Likewise.
* nscd/nscd_getpw_r.c (nscd_getpw_r): Likewise.
* nscd/nscd_getserv_r.c (nscd_getserv_r): Likewise.
* nscd/nscd_helper.c (open_socket): Likewise.
(__nscd_open_socket): Likewise.
* nscd/nscd_initgroups.c (__nscd_getgrouplist): Likewise.
* nscd/nscd_netgroup.c (__nscd_setnetgrent): Likewise.
(__nscd_innetgr): Likewise.
* nss/nss_db/db-open.c (internal_setent): Likewise.
* resolv/res-close.c (__res_iclose): Likewise.
* sunrpc/pm_getmaps.c (pmap_getmaps): Likewise.
* sysdeps/posix/closedir.c (__closedir): Likewise.
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Likewise.
* sysdeps/posix/getcwd.c (__getcwd): Likewise.
* sysdeps/posix/opendir.c (tryopen_o_directory): Likewise.
(opendir_tail): Likewise.
* sysdeps/posix/spawni.c (__spawni_child): Likewise.
* sysdeps/unix/sysv/linux/check_native.c (__check_native): Likewise.
* sysdeps/unix/sysv/linux/check_pf.c (__check_pf): Likewise.
* sysdeps/unix/sysv/linux/fips-private.h (fips_enabled_p): Likewise.
* sysdeps/unix/sysv/linux/gethostid.c (sethostid): Likewise.
(gethostid): Likewise.
* sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Likewise.
* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid):
Likewise.
* sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Likewise.
* sysdeps/unix/sysv/linux/grantpt.c (close_all_fds): Likewise.
* sysdeps/unix/sysv/linux/i386/smp.h (is_smp_system): Likewise.
* sysdeps/unix/sysv/linux/ia64/has_cpuclock.c (has_cpuclock):
Likewise.
* sysdeps/unix/sysv/linux/if_index.c (__if_nametoindex): Likewise.
* sysdeps/unix/sysv/linux/libc_fatal.c (backtrace_and_maps): Likewise.
* sysdeps/unix/sysv/linux/malloc-sysdep.h (check_may_shrink_heap):
Likewise.
* sysdeps/unix/sysv/linux/mq_notify.c (init_mq_netlink): Likewise.
* sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
Likewise.
* sysdeps/unix/sysv/linux/pthread_setname.c (pthread_setname_np):
Likewise.
* sysdeps/unix/sysv/linux/spawni.c (__spawni_child): Likewise.
* sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Likewise.
2017-08-18 18:38:55 -03:00
Joseph Myers
d9fee042e2
Consistently use uintN_t not u_intN_t everywhere.
...
This patch changes the remaining uses of the old nonstandard u_intN_t
types in glibc to use the C99 uintN_t instead, except for the
definitions of those typedefs and the tests of them in the c++-types
test. This follows the previous such fix for libm, and being
consistent in using uintN_t makes sense as a global cleanup.
Tested for x86_64, and with build-many-glibcs.py.
* catgets/catgets.c (catgets): Use uintN_t instead of u_intN_t.
* catgets/catgetsinfo.h (struct catalog_obj): Likewise.
(struct catalog_info): Likewise.
* inet/htontest.c (lo): Likewise.
(foo): Likewise.
* inet/inet_lnaof.c (inet_lnaof): Likewise.
* inet/inet_net.c (inet_network): Likewise.
* inet/inet_netof.c (inet_netof): Likewise.
* inet/rcmd.c (__ivaliduser): Likewise.
(iruserok): Likewise.
* locale/loadlocale.c (_nl_intern_locale_data): Likewise.
* locale/programs/locale-spec.c (locale_special): Likewise.
* nis/nis_findserv.c (struct findserv_req): Likewise.
(__nis_findfastest_with_timeout): Likewise.
* nss/test-netdb.c (test_network): Likewise.
* resolv/inet_neta.c (inet_neta): Likewise.
* resolv/ns_date.c (ns_datetosecs): Likewise.
(SECS_PER_DAY): Likewise.
* resolv/nss_dns/dns-network.c (_nss_dns_getnetbyaddr_r):
Likewise.
* resolv/res_comp.c (__putlong): Likewise.
(__putshort): Likewise.
(_getlong): Likewise.
(_getshort): Likewise.
* resolv/res_debug.c (p_time): Likewise.
(precsize_ntoa): Likewise.
(precsize_aton): Likewise.
(latlon2ul): Likewise.
(loc_aton): Likewise.
(loc_ntoa): Likewise.
* resolv/res_hconf.c (struct netaddr): Likewise.
(_res_hconf_reorder_addrs): Likewise.
* sunrpc/clnt_tcp.c (clnttcp_call): Likewise.
(clnttcp_control): Likewise.
* sunrpc/clnt_udp.c (clntudp_call): Likewise.
(clntudp_control): Likewise.
* sunrpc/clnt_unix.c (clntunix_call): Likewise.
(clntunix_control): Likewise.
* sunrpc/pmap_rmt.c (clnt_broadcast): Likewise.
* sunrpc/rpc/auth.h (union des_block): Likewise.
* sunrpc/tst-udp-nonblocking.c (do_test): Likewise.
* sunrpc/xdr_rec.c (struct rec_strm): Likewise.
(xdrrec_create): Likewise.
(xdrrec_endofrecord): Likewise.
(flush_out): Likewise.
* sunrpc/xdr_stdio.c (xdrstdio_getlong): Likewise.
(xdrstdio_putlong): Likewise.
* sysdeps/unix/sysv/linux/errqueue.h (struct sock_extended_err):
Likewise.
2017-08-07 19:55:34 +00:00
Florian Weimer
9f5a127131
resolv: Deal with non-deterministic address order in tst-resolv-basic
2017-07-06 22:55:53 +02:00
Florian Weimer
cb3c27e87b
support: Add resolver testing mode which does not patch _res
2017-07-05 19:04:40 +02:00
Florian Weimer
d4165eedf5
support: Add support_chroot_create and support_chroot_free
2017-07-05 19:04:40 +02:00
Florian Weimer
4446a885f3
resolv: Fix resolv_conf _res matching
...
A dot-less host name without an /etc/resolv.conf file caused an
assertion failure in update_from_conf because the function would not
deal correctly with the empty search list case.
Thanks to Andreas Schwab for debugging assistence.
2017-07-04 15:26:05 +02:00
Florian Weimer
89f6307c5d
resolv: Fix improper assert in __resolv_conf_attach
2017-07-04 11:18:34 +02:00
Florian Weimer
e237357a5a
resolv: Introduce free list for resolv_conf index slosts
2017-07-03 21:07:11 +02:00
Florian Weimer
aef16cc8a4
resolv: Automatically reload a changed /etc/resolv.conf file [BZ #984 ]
...
This commit enhances the stub resolver to reload the configuration
in the per-thread _res object if the /etc/resolv.conf file has
changed. The resolver checks whether the application has modified
_res and will not overwrite the _res object in that case.
The struct resolv_context mechanism is used to check the
configuration file only once per name lookup.
2017-07-03 21:06:23 +02:00
Florian Weimer
a1c4eb8794
resolv: Mirror the entire resolver configuration in struct resolv_conf
...
This commit adds the remaining unchanging members (which are loaded
from /etc/resolv.conf) to struct resolv_conf.
The extended name server list is currently not used by the stub
resolver. The switch depends on a cleanup: The _u._ext.nssocks
array stores just a single socket, and needs to be replaced with
a single socket value.
(The compatibility gethostname implementation does not use the
extended addres sort list, either. Updating the compat code is
not worthwhile.)
2017-07-03 21:03:21 +02:00
Florian Weimer
3f853f22c8
resolv: Lift domain search list limits [BZ #19569 ] [BZ #21475 ]
...
This change uses the extended resolver state in struct resolv_conf to
store the search list. If applications have not patched the _res
object directly, this extended search list will be used by the stub
resolver during name resolution.
2017-07-03 21:01:42 +02:00
Florian Weimer
f30a54b21b
resolv: Introduce struct resolv_conf with extended resolver state
...
This change provides additional resolver configuration state which
is not exposed through the _res ABI. It reuses the existing
initstamp field in the supposedly-private part of _res. Some effort
is undertaken to avoid memory safety issues introduced by applications
which directly patch the _res object.
With this commit, only the initstamp field is moved into struct
resolv_conf. Additional members will be added later, eventually
migrating the entire resolver configuration.
2017-07-03 20:57:28 +02:00
Florian Weimer
352f4ff9a2
resolv: Introduce struct resolv_context [BZ #21668 ]
...
struct resolv_context objects provide a temporary resolver context
which does not change during a name lookup operation. Only when the
outmost context is created, the stub resolver configuration is
verified to be current (at present, only against previous res_init
calls). Subsequent attempts to obtain the context will reuse the
result of the initial verification operation.
struct resolv_context can also be extended in the future to store
data which needs to be deallocated during thread cancellation.
2017-07-03 20:52:59 +02:00
Florian Weimer
4e45d83c92
resolv: Add preinit tests to resolv/tst-resolv-res_init-skeleton.c
2017-07-03 17:54:48 +02:00
Florian Weimer
a9270e673d
resolv: Improve debugging output from tst-resolv-res_init
2017-06-30 18:02:11 +02:00
Florian Weimer
b606c6ce66
resolv: Remove source argument fron res_options
2017-06-30 11:32:19 +02:00
Florian Weimer
3f8f1eb6b0
resolv: Remove DEBUG from resolv/res_query.c
2017-06-30 11:32:12 +02:00
Florian Weimer
6da48ca0b2
resolv: Reformat resolv/res_data.c to GNU style
2017-06-30 11:32:04 +02:00
Florian Weimer
0377511799
resolv: Move res_query, res_search res_querydomain, hostalias
...
From res_data.c to query.c
2017-06-30 11:31:55 +02:00
Florian Weimer
ded603542a
resolv: Move res_isourserver, res_send from res_data.c to res_send.c
2017-06-30 11:31:48 +02:00
Florian Weimer
6781d8e693
resolv: Turn _res_opcodes into a compatibility symbol
2017-06-30 11:31:41 +02:00
Florian Weimer
d85f99679d
resolv: Move fp_nquery, fp_query, p_query, _res_opcodes
...
From res_data.c to res_debug.c.
Also drop the unnecessary _res initialization from fp_nquery.
2017-06-30 11:31:35 +02:00
Florian Weimer
4d4ce84924
resolv: Remove unused resolv/res_debug.h header file
2017-06-30 11:31:29 +02:00
Florian Weimer
09fbb56ad6
resolv: Remove DEBUG from resolv/res_send.c
2017-06-30 11:31:24 +02:00
Florian Weimer
5ca4aaea18
resolv: Move the res_mkquery function to the resolv/mk_query.c file
2017-06-30 11:31:18 +02:00
Florian Weimer
74084febc4
resolv: Reformat resolv/res_mkquery.c to GNU style
2017-06-30 11:31:12 +02:00
Florian Weimer
7ab27b76d2
resolv: Remove DEBUG macro from resolv/res_mkquery.c
2017-06-30 11:31:02 +02:00
Florian Weimer
5b757a51b5
resolv: Make RES_ROTATE start with a random name server [BZ #19570 ]
...
Do not copy the actual name server addresses to rotate them. Use a
global rotation offset instead.
2017-06-30 10:43:33 +02:00
Florian Weimer
39bd76df3d
resolv: Avoid timeouts in test-resolv-res-init, test-resolv-res_init-thread
...
Some Linux kernels have very aggressive ICMP rate limiting on the
loopback interface. This commit introduces a minimal echoing DNS server
inside the network namespace, so that there is no need for ICMP error
messages anymore.
2017-06-27 10:21:34 +02:00
Florian Weimer
e6b4e2de6d
resolv: Call _res_hconf_init from __res_vinit
...
Many callers of __res_maybe_init also call _res_hconf_init.
Additional calls to the latter do not hurt because the function
does its work only once. (/etc/hosts.conf is not reloaded or
even checked for changes.) This means that we can simplify the
code by calling _res_hconf_init directly from __res_vinit.
2017-06-27 09:26:46 +02:00
Florian Weimer
513a71a420
resolv/tst-resolv-basic: Add test cases for bug 21295
2017-06-24 16:51:31 +02:00
Florian Weimer
9a0cc8c1bd
inet_pton: Reject IPv6 addresses with many leading zeros [BZ #16637 ]
...
2001:db8:00001::f is not a valid IPv6 address according to RFC 2373.
2017-06-23 22:51:06 +02:00
Florian Weimer
b87d47396f
resolv/res_libc.c: Reformat to GNU style
2017-06-23 18:10:41 +02:00
Florian Weimer
b1e7c13cc5
resolv: Clean up declarations of the __res_initstamp variable
2017-06-23 17:52:55 +02:00
Florian Weimer
60149b2859
__inet_pton_length: Implement new internal helper function
2017-06-21 13:09:08 +02:00
Florian Weimer
89f187a40f
resolv: Use getline for configuration file reading in res_vinit_1
2017-06-19 14:24:24 +02:00
Florian Weimer
ea4924ce5b
resolv: Report allocation errors in __res_vinit
2017-06-19 14:24:24 +02:00
Florian Weimer
4c4480eecb
resolv: Reformat res_vinit and related functions to GNU style
...
Also remove some obsolete comments.
2017-06-19 14:24:24 +02:00
Florian Weimer
94f094f22b
resolv: Introduce is_sort_mask and call it from res_vinit
2017-06-19 14:24:24 +02:00
Florian Weimer
e68111fbd6
resolv: Remove DEBUG preprocessor conditionals from res_setoptions
2017-06-19 14:24:24 +02:00
Florian Weimer
e4e5b57d23
resolv: Move _res deallocation functions to their own file
2017-06-19 14:24:23 +02:00
Florian Weimer
26bf5a1029
resolv: Move res_randomid to its own file
2017-06-19 14:24:23 +02:00