# # spec file for package c-ares # # Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %global flavor main%{nil} %if "%{flavor}" == "%{nil}" ExclusiveArch: do_not_build %define pname c-ares %endif %if "%{flavor}" == "tests" %define pname c-ares-tests %bcond_without tests %endif %if "%{flavor}" == "main" %define pname c-ares %bcond_with tests %endif %define sonum 2 %define libname libcares%{sonum} %if 0%{!?cmake_build:1} %define cmake_build make -O VERBOSE=1 %{?_smp_mflags} %endif Name: %{pname} Version: 1.17.2 Release: 1.1 Summary: Library for asynchronous name resolves License: MIT URL: https://c-ares.haxx.se/ Source0: http://c-ares.haxx.se/download/c-ares-%{version}.tar.gz Source1: http://c-ares.haxx.se/download/c-ares-%{version}.tar.gz.asc Source3: c-ares.keyring Source4: baselibs.conf ### REMOVE when upstream fixes https://github.com/c-ares/c-ares/issues/373 Source5: libcares.pc.cmake Source6: c-ares-config.cmake.in Source7: ares_dns.h Patch0: 0001-Use-RPM-compiler-options.patch Patch1: disable-live-tests.patch BuildRequires: cmake BuildRequires: gcc-c++ %if %{with tests} # Needed for getservbyport_r function to work properly. BuildRequires: netcfg %endif BuildRequires: pkgconf-pkg-config %description c-ares is a C library that performs DNS requests and name resolves asynchronously. c-ares is a fork of the library named 'ares', written by Greg Hudson at MIT. %package utils Summary: Tools for asynchronous name resolves %description utils c-ares is a C library that performs DNS requests and name resolves asynchronously. c-ares is a fork of the library named 'ares', written by Greg Hudson at MIT. This package provides some tools that make use of c-ares. %package -n %{libname} Summary: Library for asynchronous name resolves # Needed for getservbyport_r function to work properly. Requires: netcfg libnss_usrfiles2 %description -n %{libname} c-ares is a C library that performs DNS requests and name resolves asynchronously. c-ares is a fork of the library named 'ares', written by Greg Hudson at MIT. This package provides the shared libraries for c-ares. %package devel Summary: Development files for %{name} Requires: %{libname} = %{version} Requires: glibc-devel Provides: libcares-devel = %{version} Obsoletes: libcares-devel < %{version} %description devel c-ares is a C library that performs DNS requests and name resolves asynchronously. c-ares is a fork of the library named 'ares', written by Greg Hudson at MIT. This package provides the development libraries and headers needed to build packages that depend on c-ares. %prep %autosetup -p1 -n c-ares-%{version} cp %{S:5} %{S:6} . cp %{S:7} include %build %cmake \ %if %{with tests} -DCARES_BUILD_TESTS:BOOL=ON \ %endif %{nil} %cmake_build %install %if !%{with tests} %cmake_install %endif %if %{with tests} %check pushd build %cmake_build -C test LD_LIBRARY_PATH=.%_libdir:./%_lib ./bin/arestest %endif %if !%{with tests} %post -n %{libname} -p /sbin/ldconfig %postun -n %{libname} -p /sbin/ldconfig %files utils %license LICENSE.md %{_bindir}/acountry %{_bindir}/adig %{_bindir}/ahost %{_mandir}/man1/acountry.1%{?ext_man} %{_mandir}/man1/adig.1%{?ext_man} %{_mandir}/man1/ahost.1%{?ext_man} %files -n %{libname} %license LICENSE.md %{_libdir}/libcares.so.%{sonum}* %files devel %license LICENSE.md %{_libdir}/libcares.so %{_includedir}/*.h %{_mandir}/man3/ares_*.3%{?ext_man} %{_libdir}/pkgconfig/libcares.pc %{_libdir}/cmake/c-ares/ %endif %changelog * Thu Aug 12 2021 Adam Majer - update to 1.17.2: Security: * When building c-ares with CMake, the RANDOM_FILE would not be set and therefore downgrade to the less secure random number generator * If ares_getaddrinfo() was terminated by an ares_destroy(), it would cause a crash * Crash in sortaddrinfo() if the list size equals 0 due to an unexpected DNS response * Expand number of escaped characters in DNS replies as per RFC1035 5.1 to prevent spoofing follow-up (bsc#1188881, CVE-2021-3672) * Perform validation on hostnames to prevent possible XSS due to applications not performing valiation themselves Changes: * ares_malloc(0) is now defined behavior (returns NULL) rather than system-specific to catch edge cases Bug fixes: * Building tests should not force building of static libraries except on Windows * Relative headers must use double quotes to prevent pulling in a system library for details see, https://c-ares.haxx.se/changelog.html#1_17_2 * Sat Jan 16 2021 Dirk Müller - update to 1.17.1: Travis: add iOS target built with CMake (#378) Issue #377 suggested that CMake builds for iOS with c-ares were broken. This PR adds an automatic Travis build for iOS CMake. - fix build External projects were using non-public header ares_dns.h, make public again (#376) It appears some outside projects were relying on macros in ares_dns.h, even though it doesn't appear that header was ever meant to be public. That said, we don't want to break external integrators so we should distribute this header again. - note that so versioning has moved to configure.ac - note about 1.17.1 - fix sed gone wrong autotools cleanup (#372) * buildconf: remove custom logic with autoreconf - remove missing_header.patch (upstream) * Sat Nov 21 2020 Marcus Rueckert - add BR for pkg-config to get the provides in the devel package * Thu Nov 19 2020 Adam Majer - ares_dns.h, missing_header.patch: re-add missing header in last release * Tue Nov 17 2020 Adam Majer - Version update to 1.17.0 Security: * avoid read-heap-buffer-overflow in ares_parse_soa_reply found during fuzzing * Avoid theoretical buffer overflow in RC4 loop comparison * Empty hquery->name could lead to invalid memory access * ares_parse_{a,aaaa}_reply() could return a larger *naddrttls than was passed in (bsc#1178882, CVE-2020-8277) Changes: * Update help information for adig, acountry, and ahost * Test Suite now uses dynamic system-assigned ports rather than hardcoded ports to prevent failures in containers * Detect remote DNS server does not support EDNS using rules from RFC 6891 * Source tree has been reorganized to use a more modern layout * Allow parsing of CAA Resource Record Bug fixes: * readaddrinfo bad sizeof() * Test cases should honor HAVE_WRITEV flag, not depend on WIN32 * FQDN with trailing period should be queried first * ares_getaddrinfo() was returning members of the struct as garbage values if unset, and was not honoring ai_socktype and ai_protocol hints. * ares_gethostbyname() with AF_UNSPEC and an ip address would fail * Properly document ares_set_local_ip4() uses host byte order For details, see https://c-ares.haxx.se/changelog.html - add missing upstream sources, to be removed for next release - remove unnecessary BuildRequires - fix building on SLE12 systems * Fri Sep 11 2020 Tomáš Chvátal - simplify conditions bit to make it tad more readable * Thu Sep 10 2020 Atri Bhattacharya - Implement multibuild specfile to split out tests into its own flavor; this way we can build and run tests, which require static lib, as well as avoid packaging the latter without issues with the installed cmake file.. * Wed Jul 8 2020 Matthias Eliasson - Version update to 1.16.1 Security: * Prevent possible use-after-free and double-free in ares_getaddrinfo() if ares_destroy() is called prior to ares_getaddrinfo() completing. Reported by Jann Horn at Google Project Zero. Changes: * Allow TXT records on CHAOS qclass. Used for retriving things like version.bind, version.server, authoris.bind, hostname.bind, and id.server. [3] Bug fixes: * Fix Windows Unicode incompatibilities with ares_getaddrinfo() [1] * Silence false cast-align compiler warnings due to valid casts of struct sockaddr to struct sockaddr_in and struct sockaddr_in6. * MacOS should use libresolv for retrieving DNS servers, like iOS * CMake build system should populate the INCLUDE_DIRECTORIES property of installed targets [2] * Correct macros in use for the ares_getaddrinfo.3 man page - Changes in version 1.16.0 Changes: * Introduction of ares_getaddrinfo() API which provides similar output (including proper sorting as per RFC 6724) to the system native API, but utilizes different data structures in order to provide additional information such as TTLs and all aliases. Please reference the respective man pages for usage details. * Parse SOA records from ns_t_any response * CMake: Provide c-ares version in package export file * CMake: Add CPACK functionality for DEB and RPM * CMake: Generate PDB files during build * CMake: Support manpage installation Bug fixes: * Fix bad expectation in IPv6 localhost test. * AutoTools: use XC_CHECK_BUILD_FLAGS instead of XC_CHECK_USER_FLAGS to prevent complaints about CPPFLAGS in CFLAGS. * Fix .onion handling * Command line usage was out of date for adig and ahost. * Typos in manpages * If ares_getenv is defined, it must return a value on all platforms * If /etc/resolv.conf has invalid lookup values, use the defaults. * Tests: Separate live tests from SetServers* tests as only live tests should require internet access. * ares_gethostbyname() should return ENODATA if no valid A or AAAA record is found, but a CNAME was found. * CMake: Rework library function checking to prevent unintended linking with system libraries that aren't needed. * Due to use of inet_addr() it was not possible to return 255.255.255.255 from ares_gethostbyname(). * CMake: Fix building of tests on Windows - Drop regression.patch which have been fixed upstream - Refresh disable-live-tests.patch - Remove static lib since its required when doing tests and we dont want it included in package - Run spec-cleaner * Mon Feb 3 2020 Adam Majer - Upgrade to latest snapshot from 2020-01-17 - disable-live-tests.patch: refreshed - regression.patch: fix a regression in DNS results that contain both A and AAAA answers. * Tue Jan 28 2020 Michał Rostecki - Add netcfg as the build requirement and runtime requirement. ares_getaddrinfo function uses the getservbyport_r function which requires the /etc/services file to function properly. That config file is provided by the netcfg package. Unit tests rely on it too, hence it has to be a build dependency as well. * Mon Jan 6 2020 Todd R - Switch to cmake-based build. Some packages need the cmake build files. * Fri Nov 15 2019 Tomáš Chvátal - Fix version number of the snapshot to not be downgrade: bsc#1156601 * Fri Nov 8 2019 Adam Majer - Update to upstream snapshot 20191108 * getaddrinfo - avoid infinite loop in case of NXDOMAIN * ares_getenv - return NULL in all cases * implement ares_getaddrinfo - onion-crash.patch: removed, upstreamed. - removed upstream patches that are part of the snapshot: 0001-Add-initial-implementation-for-ares_getaddrinfo-112.patch 0002-Remaining-queries-counter-fix-additional-unit-tests-.patch 0003-Bugfix-for-ares_getaddrinfo-and-additional-unit-test.patch 0004-Add-ares__sortaddrinfo-to-support-getaddrinfo-sorted.patch 0005-getaddrinfo-avoid-infinite-loop-in-case-of-NXDOMAIN-.patch 0006-getaddrinfo-callback-must-be-called-on-bad-domain-24.patch 0007-getaddrinfo-enhancements-257.patch 0008-Add-missing-limits.h-include-from-ares_getaddrinfo.c.patch 0009-Increase-portability-of-ares-test-mock-ai.cc-235.patch 0010-Disable-failing-test.patch - disable-live-tests.patch - updated * Wed Oct 23 2019 Michał Rostecki - Add upstream patches with the ares_getaddrinfo function: * 0001-Add-initial-implementation-for-ares_getaddrinfo-112.patch * 0002-Remaining-queries-counter-fix-additional-unit-tests-.patch * 0003-Bugfix-for-ares_getaddrinfo-and-additional-unit-test.patch * 0004-Add-ares__sortaddrinfo-to-support-getaddrinfo-sorted.patch * 0005-getaddrinfo-avoid-infinite-loop-in-case-of-NXDOMAIN-.patch * 0006-getaddrinfo-callback-must-be-called-on-bad-domain-24.patch * 0007-getaddrinfo-enhancements-257.patch * 0008-Add-missing-limits.h-include-from-ares_getaddrinfo.c.patch * 0009-Increase-portability-of-ares-test-mock-ai.cc-235.patch - Add a patch which disables test failing on OBS (but passing in local environment): * 0010-Disable-failing-test.patch * Wed Feb 13 2019 adam.majer@suse.de - Version update to 1.15.0: * Add ares_init_options() configurability for path to resolv.conf file * Ability to exclude building of tools (adig, ahost, acountry) in CMake * Report ARES_ENOTFOUND for .onion domain names as per RFC7686 (bsc#1125306) * Apply the IPv6 server blacklist to all nameserver sources * Prevent changing name servers while queries are outstanding * ares_set_servers_csv() on failure should not leave channel in a bad state - enable unit tests - disable-live-tests.patch: disable tests to live servers - onion-crash.patch: backport fix for a crash affecting .onion TLD * Tue Feb 20 2018 jengelh@inai.de - Remove ineffective --with-pic. * Tue Feb 20 2018 tchvatal@suse.com - Version update to 1.14.0: * Fix patch for CVE-2017-1000381 to not be overly aggressive * gethostbyaddr should fail with ECANCELLED not ENOTFOUND when ares_cancel is called * ares_gethostbyname.3: fix callback status values * docs: Document WSAStartup requirement * Fix a typo in init_by_resolv_conf * Tue Feb 20 2018 tchvatal@suse.com - Rename everything to c-ares * Tue Jun 20 2017 tchvatal@suse.com - Version update to 1.13.0: * Fixes bsc#1044946 CVE-2017-1000381 * Bunch of bugfixes - Drop cares-1.9.1-ocloexec.patch as it broke again and it is not really worth all the fwdporting - Drop check phase there is only return 0 * Mon Oct 31 2016 tchvatal@suse.com - Version update to 1.12.0: * Fixes bsc#1007728 CVE-2016-5180 * api: add ARES_OPT_NOROTATE optmask value * Collection of bugfixes * Thu Jun 9 2016 astieger@suse.com - update to 1.11.0: * Allow multiple -s options to the ahost command * api: Expose the ares_library_initialized() function * api: Add ares_set_sortlist(3) entrypoint * api: Add entrypoints to allow use of per-server ports * api: introduce `ares_parse_txt_reply_ext` * api: Add ares_set_socket_configure_callback() * Add -t u option to ahost * collection of bug fixes * Fri Nov 14 2014 dimstar@opensuse.org - No longer perform gpg validation; osc source_validator does it implicit: + Drop gpg-offline BuildRequires. + No longer execute gpg_verify. * Thu May 15 2014 tchvatal@suse.com - Version bump to 1.10.0: * Various small updates all around * Cleanup of automake to build with latest tools * For more see CHANGES - Remove upstreamed patches: * cares-autotools.diff - Remove patch that needs quite work and was never acceted upstream: * 0001-cares-1.9.1-add-symbol-versioning-support.patch - Added patches: * 0001-Use-RPM-compiler-options.patch * Fri May 3 2013 mvyskocil@suse.com - Use the genuine upstream tarball - Verify tarball using gpg-offline * Thu May 2 2013 jengelh@inai.de - Get rid of outdated autotools construct to fix build with new automake-1.13 * Sun Jan 6 2013 p.drouand@gmail.com - Update to 1.9.1 version: * include the ares_parse_soa_reply.* files in the tarball - Removed patches (fixed and merged on upstream release) * 0001-ares_destroy.c-fix-segfault-in-ares_destroy_options.patch * 0002-ares_getnameinfo-fix-random-results-with-c-ares-1.7..patch * 0003-ares_init.c-fix-segfault-triggered-in-ares_init_opti.patch - Updated and versionned patchs for upstream release: * 0001-add-symbol-versioning-support.patch * cares-ocloexec.patch * Fri Feb 3 2012 crrodriguez@opensuse.org - Fix license - provide symbol versioning support - fix -debuginfo packages * Tue Nov 15 2011 jengelh@medozas.de - Remove redundant/unwanted tags/section (cf. specfile guidelines) * Mon Nov 14 2011 crrodriguez@opensuse.org - Open all fds with O_CLOEXEC. * Mon Oct 17 2011 crrodriguez@opensuse.org - Cherry-pick 3 patches from HEAD * ares_destroy.c: fix segfault in ares_destroy_options() * ares_getnameinfo: fix random results, memory corruption * ares_init.c: fix segfault triggered in ares_init_options() upon previous failure of init_by_defaults() * Wed Aug 17 2011 crrodriguez@opensuse.org - Update to version 1.7.4 * Drop obsolete patch * detection of semicolon comments in resolv.conf * fixed ares_parse_*_reply memory leaks * only fall back to AF_INET searches when looking for AF_UNSPEC addresses * Sat Mar 19 2011 crrodriguez@opensuse.org - fix NULL ptr dereference * Mon Dec 13 2010 cristian.rodriguez@opensuse.org - c-ares version 1.7.4 * local-bind: Support binding to local interface/IPs, see ares_set_local_ip4, ares_set_local_ip6, ares_set_local_dev * memory leak in ares_getnameinfo * add missing break that caused get_ares_servers to fail * ares_parse_a_reply: fix CNAME response parsing * init_by_options: don't copy an empty sortlist * Replaced uint32_t with unsigned int to fix broken builds on a couple of platforms * Fix lookup with HOSTALIASES set * adig: fix NAPTR parsing * compiler warning cleanups * Fri Oct 29 2010 cristian.rodriguez@opensuse.org - Fix aliasing warning in gcc - Add missing break that caused get_ares_servers to fail * Sun Jul 25 2010 cristian.rodriguez@opensuse.org - update to version 1.7.3 * ares_init: Last, not first instance of domain or search should win * Added ares_parse_mx_reply() * Fix memory leak * Sat Apr 24 2010 coolo@novell.com - buildrequire pkg-config to fix provides * Wed Mar 24 2010 crrodriguez@opensuse.org - update to version 1.7.1, includes IPV6 nameservers support * Wed Mar 10 2010 crrodriguez@opensuse.org - remove invalid configure options * Mon Feb 22 2010 crrodriguez@opensuse.org - fix build - update to version 1.7.0, see RELEASE_NOTES for detail * Mon Feb 1 2010 jengelh@medozas.de - package baselibs.conf * Wed Sep 30 2009 crrodriguez@opensuse.org - add gcc visibility support * Mon Jan 5 2009 crrodriguez@suse.de - update to version 1.6.0 * Added support for the glibc "rotate" resolv.conf option (or ARES_OPT_ROTATE) * Added ares_gethostbyname_file() * Added ares_dup() * Added ares_set_socket_callback() * improved configure detection of several functions * improved source code portability * adig supports a regular numerical dotted IP address for the -s option * handling of EINPROGRESS for UDP connects * ares_parse_ptr_reply() would cause a buffer to shrink instead of expand if a reply contained 8 or more records * buildconf works on OS X * Wed Sep 3 2008 crrodriguez@suse.de - update to c-ares 1.5.3 final * address an issue in which a response could be sent back to the source port of a client from a different address than the request was made to. This is one form of a DNS cache poisoning attack. Only necessary on UDP sockets as they are connection-less, TCP is unaffected. * Sat Aug 9 2008 crrodriguez@suse.de - update to c-ares 1.5.3+20080809 * users found that the second and subsequent DNS lookups from fresh processes using c-ares to resolve the same address would randomly cause the process to never see a reply. * Sun Jun 15 2008 crrodriguez@suse.de - update to version 1.5.2 final * code refactoring in ares_gethostbyaddr * improved checking of /dev/urandom in configure script * new sample application, acountry * improved MSVC6 dsp files * adig sample application supports NAPTR records * improved file seeding randomizer * improved parsing of resolver configuration files * updated configure script to remove autoconf 2.62 warnings * use monotonic time source if available * return all PTR-records when doing reverse lookups * millisecond resolution support for the timeout option * Fri Apr 25 2008 crrodriguez@suse.de - update to current c-ares from curl cvs * Eino Tuominen improved the code when a file is used to seed the randomizer. * Alexey Simak made adig support NAPTR records * Erik Kline cleaned up ares_gethostbyaddr.c:next_lookup() somewhat * add pkgconfig script * Tue Apr 15 2008 ro@suse.de - added baselibs.conf file for multilib support (libcurl4) * Fri Nov 30 2007 crrodriguez@suse.de - version 1.5.1 * Wed Aug 8 2007 crrodriguez@suse.de - run ldconfig