net-dns/c-ares: Sync with Gentoo

It's from Gentoo commit 4fdf7f1163707eb340c5d1c06fa7b474b4e823cf.
This commit is contained in:
Flatcar Buildbot 2024-07-01 07:17:03 +00:00 committed by Mathieu Tortuyaux
parent cb7ea53214
commit ed41b13196
No known key found for this signature in database
GPG Key ID: AC5CCFB52545D9B8
6 changed files with 16 additions and 279 deletions

View File

@ -1,8 +1,6 @@
DIST c-ares-1.25.0.tar.gz 1264129 BLAKE2B a4f4b493e1331ade27504238c3e520e1ffaa525baf99442c88de3aeda1eb06a12ec804a5f0f699fb8acd469ccd2b3d08f5c32b4d01d50cfdc31097665087fce9 SHA512 f73ffc45c17f1e952ea5fae8a1d9e1508427f21c821ff470ff0b728cc4a1e21d1274f95d9192c22f704bc7e0f58a633608cfdc1704dfe8950902fdfc3dfa2e1c
DIST c-ares-1.25.0.tar.gz.asc 488 BLAKE2B 45b07fc1ef14452b8a4fda63f134e389b66c120ccd8de3d48ccc5659c481db1796339a1968db406cf9b3da1a9c5aa81ccf538bc0546bb6c4babbe7de9c14f576 SHA512 9cf2dcd80807b54cd7fa6871283863384a4b6b10e0ef9c287bb4969a9169b7f12180a15c5fa756770c5ba01558ef48615aaaaefa546d19b3496e3cbe0454346b
DIST c-ares-1.26.0.tar.gz 1298394 BLAKE2B 9bcbb321b31518fdd3481447e1bba733dbf0eabd1876aa0fec6737888fd176b837c64e6b22ae5754a905f0fd1591d4fd516db558fafae92cc2684ad7e0c29f63 SHA512 81657b8b9840a565b04ecf87ef8f0fc3192a9594808e47aed5e5bbebf2b5f0066b0cd5fae70f0fe70b68d428b4cc75fba22d2ae7683c6d0f87979c414c072af1
DIST c-ares-1.26.0.tar.gz.asc 488 BLAKE2B 89c420ed235dce86c3d18ce62b58f50b78abf919c178e9a786fce5ee11da2b7a1314f8eb76bef20df0e43d18f636508540d9a9d2dfcd84df0c62691497f3a9a0 SHA512 84cd9918c22346a975400f17bf64e5093aa7b2d8f3377799cde5f6ab508e8f5ab6a004497747b702b7249b2b1369cdd22149519da01a405cf928806007e7a599
DIST c-ares-1.27.0.tar.gz 1301440 BLAKE2B 112bf16288efc3ca1c69216de6bb42fdfc5348e70879321fb27f9602a8f469a21fa502a1cdd2f935e4ad0505ea7e22bd3a3326ce83bdb2acbe5ff266fc11cc6f SHA512 d0bffeeabdc5f1d4cececd46bd495b8224a64eaaf6d2a91c5475517440effe0e096146a1ebf19ece07367198be576c61b11961d5e4c3f601c5c5529ce4fcb46a
DIST c-ares-1.27.0.tar.gz.asc 488 BLAKE2B 64798140a1d61e32ba45467034d9da75abd8f48810643947c94b04dcaae1b8c68da7a6d9acb7476808601acfe6a527b2cd855d99912f5ac069a597b9c9c890e3 SHA512 dbaa2e96035283e55c7a3c940255d9cc81d98961f59a10586cd666525a0fddf0e3ada01fd79133a278159f47c344bce70bcc4ad1b5df5c853273941b744357e4
DIST c-ares-1.28.1.tar.gz 1312102 BLAKE2B 2d0f12aeb4b947f76fe6c45e2bb0a7401c5d3ae5c84a94f2387f05b639587275e12cb0a2798caa381726e37757973b28c543249f9528b60746b8bf543a70be77 SHA512 9a24f40002b661d97c9b49a617d2e6b12bad1c9f22e872611252d051ec650f886c010207939fac6992610b3cd5a87588f802d7dfa1310ced7c6621ea2f99dd90
DIST c-ares-1.28.1.tar.gz.asc 488 BLAKE2B 90f3aedc3b56f31519a9b2746e528bb952364748b6053ecebaa3edf4269aab6b3badad459a14e8afe623340b294fd072b13c60af540eb59d7f4d82eb5204be83 SHA512 62659e3c41ea7158c7fdaab3246fee6a6a1502dec12d322efd353e5a0fb1b0aa4c1caf7ace37e1d3ea0b2937522814fdf66af2d19a501e9b9995b86e2369410d
DIST c-ares-1.29.0.tar.gz 1329299 BLAKE2B 7dd6a0dc85d3383087726cd48e75b481f4ef7551a41590de21b7f30f9e588d7bef87c852203b91f281b0fbf44dca75f0ae538f6a3c17fe8ff29c802d05d36189 SHA512 0287fd59aa6d831e0d1705deb6b4b1ab3b97a28c5c42feeeaa1eeab55ffb429998c7f0735f15cf5eaeb9177cb77800e6b0b01107bd28fb082cf737f8c12766d0
DIST c-ares-1.29.0.tar.gz.asc 488 BLAKE2B 3d955b0a130dce562436d9629f1403e30ee5ebd2e981a9c2220b51d129222c3760d6bd8a681cab6115e3f2ef0bcf8e8d600792fc498bc0c05638ce7fcac0d509 SHA512 a379f3c5338073810b7bf932fecf0ce1f0b382cfbc75521f4b135cb78d0a9fd418b06f7affd747fa00d11479186db248fe8ef8120858de2b8f562b56cc41ecb2
DIST c-ares-1.31.0.tar.gz 1012373 BLAKE2B d302862148998fbfb737e5f78826a3152b299fbbf04db4d80580daeaade77e4ea1a9513f4d194746733c33a35474f39dce43dd0562b3faa8673b366a2190c87c SHA512 571d2555b4aaf3bf9cd7b5c89be8448ca26fe0ea1f3d664b07a01b42d28af4f5412b30485ef01d4bacc4e08de487dc6eeda98acf212a6a08edec6805f17210cc
DIST c-ares-1.31.0.tar.gz.asc 228 BLAKE2B 41d35804e4f5d0e11c2c6c192453a0d48f779be999a3f9c1bd8066c547e0ed9959083d953b7735ca15699444913bcdd7d43c3871e11a381e9c8ee508086fc3d8 SHA512 ea2decdec5913f25e690e6c7437fad1682b2df807397e4b764ebb2a8b010804f77b91a889e8aa00471cd1bba3b96c5f90d815ffa677598e9b516909e29b7f960

View File

@ -1,92 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/danielstenberg.asc
inherit edo multilib-minimal verify-sig
DESCRIPTION="C library that resolves names asynchronously"
HOMEPAGE="https://c-ares.org/"
SRC_URI="
https://c-ares.org/download/${P}.tar.gz
verify-sig? ( https://c-ares.org/download/${P}.tar.gz.asc )
"
# ISC for lib/{bitncmp.c,inet_ntop.c,inet_net_pton.c} (bug #912405)
LICENSE="MIT ISC"
# Subslot = SONAME of libcares.so.2
SLOT="0/2"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="static-libs test"
RESTRICT="!test? ( test )"
BDEPEND="
test? ( dev-cpp/gtest )
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
"
DOCS=( AUTHORS CHANGES NEWS README.md RELEASE-NOTES.md TODO )
MULTILIB_WRAPPED_HEADERS=(
/usr/include/ares_build.h
)
A__QA_CONFIG_IMPL_DECL_SKIP=(
# Checking for obsolete headers
malloc
calloc
free
# Non-existent on Linux
closesocket
CloseSocket
ioctlsocket
bitncmp
ConvertInterfaceIndexToLuid
ConvertInterfaceLuidToNameA
)
multilib_src_configure() {
local myeconfargs=(
--enable-symbol-hiding
$(use_enable static-libs static)
$(use_enable test tests)
)
# Needed for running unit tests only
# Violates sandbox and tests pass fine without
export ax_cv_uts_namespace=no
export ax_cv_user_namespace=no
ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
}
multilib_src_test() {
cd "${BUILD_DIR}"/test || die
# We're skipping the "real" network tests with the filter
# see https://github.com/c-ares/c-ares/tree/main/test
local network_tests=(
# Most live tests have Live in the name
*Live*
# These don't but are still in ares-test-live.cc => live
*GetTCPSock*
*TimeoutValue*
*GetSock*
*GetSock_virtualized*
*VerifySocketFunctionCallback*
# Seems flaky, even run manually
# https://github.com/c-ares/c-ares/commit/9e542a8839f81c990bb0dff14beeaf9aa6bcc18d
*MockUDPMaxQueriesTest.GetHostByNameParallelLookups*
)
# The format for disabling test1, test2, and test3 looks like:
# -test1:test2:test3
edo ./arestest --gtest_filter=-$(echo $(IFS=:; echo "${network_tests[*]}"))
}
multilib_src_install_all() {
einstalldocs
find "${ED}" -name "*.la" -delete || die
}

View File

@ -9,15 +9,15 @@ inherit edo multilib-minimal verify-sig
DESCRIPTION="C library that resolves names asynchronously"
HOMEPAGE="https://c-ares.org/"
SRC_URI="
https://c-ares.org/download/${P}.tar.gz
verify-sig? ( https://c-ares.org/download/${P}.tar.gz.asc )
https://github.com/c-ares/c-ares/releases/download/cares-${PV//./_}/${P}.tar.gz
verify-sig? ( https://github.com/c-ares/c-ares/releases/download/cares-${PV//./_}/${P}.tar.gz.asc )
"
# ISC for lib/{bitncmp.c,inet_ntop.c,inet_net_pton.c} (bug #912405)
LICENSE="MIT ISC"
# Subslot = SONAME of libcares.so.2
SLOT="0/2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="static-libs test"
RESTRICT="!test? ( test )"

View File

@ -9,8 +9,8 @@ inherit edo multilib-minimal verify-sig
DESCRIPTION="C library that resolves names asynchronously"
HOMEPAGE="https://c-ares.org/"
SRC_URI="
https://c-ares.org/download/${P}.tar.gz
verify-sig? ( https://c-ares.org/download/${P}.tar.gz.asc )
https://github.com/c-ares/c-ares/releases/download/cares-${PV//./_}/${P}.tar.gz
verify-sig? ( https://github.com/c-ares/c-ares/releases/download/cares-${PV//./_}/${P}.tar.gz.asc )
"
# ISC for lib/{bitncmp.c,inet_ntop.c,inet_net_pton.c} (bug #912405)

View File

@ -3,30 +3,31 @@
EAPI=8
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/danielstenberg.asc
# Both Daniel and Brad are listed as possible signers on the homepage
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/bradhouse.asc
inherit edo multilib-minimal verify-sig
DESCRIPTION="C library that resolves names asynchronously"
HOMEPAGE="https://c-ares.org/"
SRC_URI="
https://c-ares.org/download/${P}.tar.gz
verify-sig? ( https://c-ares.org/download/${P}.tar.gz.asc )
https://github.com/c-ares/c-ares/releases/download/v${PV}/${P}.tar.gz
verify-sig? ( https://github.com/c-ares/c-ares/releases/download/v${PV}/${P}.tar.gz.asc )
"
# ISC for lib/{bitncmp.c,inet_ntop.c,inet_net_pton.c} (bug #912405)
LICENSE="MIT ISC"
# Subslot = SONAME of libcares.so.2
SLOT="0/2"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="static-libs test"
RESTRICT="!test? ( test )"
BDEPEND="
test? ( dev-cpp/gtest )
verify-sig? ( sec-keys/openpgp-keys-danielstenberg )
verify-sig? ( sec-keys/openpgp-keys-bradhouse )
"
DOCS=( AUTHORS CHANGES NEWS README.md RELEASE-NOTES TODO )
DOCS=( AUTHORS README.md RELEASE-NOTES.md )
MULTILIB_WRAPPED_HEADERS=(
/usr/include/ares_build.h
@ -47,10 +48,6 @@ A__QA_CONFIG_IMPL_DECL_SKIP=(
ConvertInterfaceLuidToNameA
)
PATCHES=(
"${FILESDIR}"/${P}-fix-sanity-check-rr.patch
)
multilib_src_configure() {
local myeconfargs=(
--enable-symbol-hiding

View File

@ -1,166 +0,0 @@
https://github.com/c-ares/c-ares/issues/683
https://github.com/c-ares/c-ares/commit/626dcb155b4daf3360e4251c64ce052e7e520b34
From 626dcb155b4daf3360e4251c64ce052e7e520b34 Mon Sep 17 00:00:00 2001
From: Brad House <brad@brad-house.com>
Date: Fri, 12 Jan 2024 09:55:42 -0500
Subject: [PATCH] Do not sanity check RR Name vs Question (#685)
It appears as though we should never sanity check the RR name vs the question name as some DNS servers may return results for alias records.
Fixes Bug: #683
Fix By: Brad House (@bradh352)
--- a/src/lib/ares__parse_into_addrinfo.c
+++ b/src/lib/ares__parse_into_addrinfo.c
@@ -81,7 +81,6 @@ ares_status_t ares__parse_into_addrinfo(const unsigned char *abuf, size_t alen,
}
for (i = 0; i < ancount; i++) {
- const char *rname = NULL;
ares_dns_rec_type_t rtype;
const ares_dns_rr_t *rr =
ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i);
@@ -91,13 +90,18 @@ ares_status_t ares__parse_into_addrinfo(const unsigned char *abuf, size_t alen,
}
rtype = ares_dns_rr_get_type(rr);
- rname = ares_dns_rr_get_name(rr);
- /* Old code did this hostname sanity check */
- if ((rtype == ARES_REC_TYPE_A || rtype == ARES_REC_TYPE_AAAA) &&
- strcasecmp(rname, hostname) != 0) {
- continue;
- }
+ /* Issue #683
+ * Old code did this hostname sanity check, however it appears this is
+ * flawed logic. Other resolvers don't do this sanity check. Leaving
+ * this code commented out for future reference.
+ *
+ * rname = ares_dns_rr_get_name(rr);
+ * if ((rtype == ARES_REC_TYPE_A || rtype == ARES_REC_TYPE_AAAA) &&
+ * strcasecmp(rname, hostname) != 0) {
+ * continue;
+ * }
+ */
if (rtype == ARES_REC_TYPE_CNAME) {
struct ares_addrinfo_cname *cname;
--- a/src/lib/ares_parse_ptr_reply.c
+++ b/src/lib/ares_parse_ptr_reply.c
@@ -113,7 +113,6 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen_int,
/* Cycle through answers */
for (i = 0; i < ancount; i++) {
- const char *rname = NULL;
const ares_dns_rr_t *rr =
ares_dns_record_rr_get(dnsrec, ARES_SECTION_ANSWER, i);
@@ -141,17 +140,20 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen_int,
continue;
}
- /* Old code compared the name in the rr to the ptrname, so we'll do that
- * check here, but I'm not sure its necessary */
- rname = ares_dns_rr_get_name(rr);
- if (rname == NULL) {
- /* Shouldn't be possible */
- status = ARES_EBADRESP;
- goto done;
- }
- if (strcasecmp(ptrname, rname) != 0) {
- continue;
- }
+ /* Issue #683
+ * Old code compared the name in the rr to the ptrname, but I think this
+ * is wrong since it was proven wrong for A & AAAA records. Leaving
+ * this code commented out for future reference
+ *
+ * rname = ares_dns_rr_get_name(rr);
+ * if (rname == NULL) {
+ * status = ARES_EBADRESP;
+ * goto done;
+ * }
+ * if (strcasecmp(ptrname, rname) != 0) {
+ * continue;
+ * }
+ */
/* Save most recent PTR record as the hostname */
hostname = ares_dns_rr_get_str(rr, ARES_RR_PTR_DNAME);
--- a/test/ares-test-parse-a.cc
+++ b/test/ares-test-parse-a.cc
@@ -312,13 +312,19 @@ TEST_F(LibraryTest, ParseAReplyErrors) {
EXPECT_EQ(nullptr, host);
pkt.add_question(new DNSQuestion("example.com", T_A));
- // Question != answer
+ // Question != answer, this is ok as of Issue #683
pkt.questions_.clear();
pkt.add_question(new DNSQuestion("Axample.com", T_A));
data = pkt.data();
- EXPECT_EQ(ARES_ENODATA, ares_parse_a_reply(data.data(), (int)data.size(),
+ EXPECT_EQ(ARES_SUCCESS, ares_parse_a_reply(data.data(), (int)data.size(),
&host, info, &count));
- EXPECT_EQ(nullptr, host);
+ ASSERT_NE(nullptr, host);
+ std::stringstream ss;
+ ss << HostEnt(host);
+ EXPECT_EQ("{'Axample.com' aliases=[] addrs=[2.3.4.5]}", ss.str());
+ ares_free_hostent(host);
+ host = nullptr;
+
pkt.questions_.clear();
pkt.add_question(new DNSQuestion("example.com", T_A));
--- a/test/ares-test-parse-aaaa.cc
+++ b/test/ares-test-parse-aaaa.cc
@@ -139,13 +139,19 @@ TEST_F(LibraryTest, ParseAaaaReplyErrors) {
EXPECT_EQ(nullptr, host);
pkt.add_question(new DNSQuestion("example.com", T_AAAA));
- // Question != answer
+ // Question != answer, this is ok as of Issue #683
pkt.questions_.clear();
pkt.add_question(new DNSQuestion("Axample.com", T_AAAA));
data = pkt.data();
- EXPECT_EQ(ARES_ENODATA, ares_parse_aaaa_reply(data.data(), (int)data.size(),
+ EXPECT_EQ(ARES_SUCCESS, ares_parse_aaaa_reply(data.data(), (int)data.size(),
&host, info, &count));
- EXPECT_EQ(nullptr, host);
+ ASSERT_NE(nullptr, host);
+ std::stringstream ss;
+ ss << HostEnt(host);
+ EXPECT_EQ("{'Axample.com' aliases=[] addrs=[0101:0101:0202:0202:0303:0303:0404:0404]}", ss.str());
+ ares_free_hostent(host);
+
+ host = nullptr;
pkt.questions_.clear();
pkt.add_question(new DNSQuestion("example.com", T_AAAA));
--- a/test/ares-test-parse-ptr.cc
+++ b/test/ares-test-parse-ptr.cc
@@ -163,13 +163,20 @@ TEST_F(LibraryTest, ParsePtrReplyErrors) {
addrv4, sizeof(addrv4), AF_INET, &host));
pkt.add_question(new DNSQuestion("64.48.32.16.in-addr.arpa", T_PTR));
- // Question != answer
+ // Question != answer, ok after #683
+ host = nullptr;
pkt.questions_.clear();
pkt.add_question(new DNSQuestion("99.48.32.16.in-addr.arpa", T_PTR));
data = pkt.data();
- EXPECT_EQ(ARES_ENODATA, ares_parse_ptr_reply(data.data(), (int)data.size(),
+ EXPECT_EQ(ARES_SUCCESS, ares_parse_ptr_reply(data.data(), (int)data.size(),
addrv4, sizeof(addrv4), AF_INET, &host));
- EXPECT_EQ(nullptr, host);
+ ASSERT_NE(nullptr, host);
+ std::stringstream ss;
+ ss << HostEnt(host);
+ EXPECT_EQ("{'other.com' aliases=[other.com] addrs=[16.32.48.64]}", ss.str());
+ ares_free_hostent(host);
+
+ host = nullptr;
pkt.questions_.clear();
pkt.add_question(new DNSQuestion("64.48.32.16.in-addr.arpa", T_PTR));