Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package c-ares for openSUSE:Factory checked in at 2026-11-10 16:29:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/c-ares (Old) and /work/SRC/openSUSE:Factory/.c-ares.new.3759290 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "c-ares" Tue Nov 10 16:29:42 2026 rev:30 rq:1396362 version:1.34.9 Changes: -------- --- /work/SRC/openSUSE:Factory/c-ares/c-ares.changes 2026-08-25 13:19:06.986901306 +0200 +++ /work/SRC/openSUSE:Factory/.c-ares.new.3759290/c-ares.changes 2026-11-10 16:29:49.120282772 +0100 @@ -1,0 +2,18 @@ +Fri Nov 6 09:23:54 UTC 2026 - Adam Majer <[email protected]> + +- c-ares 1.34.9: + * buffer overflow when ares_dup() or ares_save_options() runs while another thread changes the servers (bsc#1289583) + * uninitialized memory returned for a numeric IPv6 name with a prefix length (bsc#1289584) + * the query cache could return an answer obtained using different EDNS options (bsc#1289585) + * use-after-free when an application cancels lookups from a callback, or shuts a channel down (bsc#1289578) + * use-after-free of a connection after the socket-state callback returns (bsc#1289579) + * use-after-free when an application cancels lookups from a server-state callback (bsc#1289580) + * use-after-free of a server record when an application changes its DNS servers from a callback (bsc#1289581) + * use-after-free of a cached DNS answer while the application is still reading it (bsc#1289582) + * memory corruption when an application cancels its lookups after a connection failure (bsc#1289574) + * a DNS reply that arrived from a different server than the one queried could be accepted (bsc#1289575) + * use-after-free of a lookup after shutting down a failed connection (bsc#1289576) + +- test-fixes.patch: fix testsuite to only use localhost + +------------------------------------------------------------------- @@ -4 +22 @@ -- c-ares 1.36.8: +- c-ares 1.34.8: @@ -12,0 +31 @@ +- old-gtest.patch: old gtest adaptation to run tests in SLE15:Update @@ -20 +39 @@ -- c-ares 1.35.6: +- c-ares 1.34.6: Old: ---- c-ares-1.34.8.tar.gz c-ares-1.34.8.tar.gz.asc New: ---- c-ares-1.34.9.tar.gz c-ares-1.34.9.tar.gz.asc old-gtest.patch test-fixes.patch ----------(New B)---------- New: - old-gtest.patch: old gtest adaptation to run tests in SLE15:Update - README.md: Add readme with build status New: - test-fixes.patch: fix testsuite to only use localhost ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ c-ares.spec ++++++ --- /var/tmp/diff_new_pack.ZmdEDR/_old 2026-11-10 16:29:50.022320502 +0100 +++ /var/tmp/diff_new_pack.ZmdEDR/_new 2026-11-10 16:29:50.023320544 +0100 @@ -26,7 +26,7 @@ %endif Name: c-ares%pkg_suffix -Version: 1.34.8 +Version: 1.34.9 Release: 0 Summary: Library for asynchronous name resolves License: MIT @@ -37,6 +37,8 @@ Source4: baselibs.conf Source5: series Source10: README.md +Patch1: old-gtest.patch +Patch2: test-fixes.patch BuildRequires: c++_compiler BuildRequires: cmake # Needed for getservbyport_r function to work properly. @@ -109,7 +111,8 @@ %endif %if ("@BUILD_FLAVOR@" != "testsuite") -%ldconfig_scriptlets -n %{libname} +%post -n %{libname} -p /sbin/ldconfig +%postun -n %{libname} -p /sbin/ldconfig %endif %check ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.ZmdEDR/_old 2026-11-10 16:29:50.088323263 +0100 +++ /var/tmp/diff_new_pack.ZmdEDR/_new 2026-11-10 16:29:50.091323388 +0100 @@ -1,5 +1,4 @@ -mtime: 1787566442 -commit: 960fa3e6180998b153814441fceb1c421351d2d2562ac168fa45b0f46789f1b9 -url: https://src.opensuse.org/adamm/c-ares.git -revision: factory +mtime: 1794238356 +commit: 5e566a1154a87f0accfe066184453e72fde41824b3d55d3506c8b008ff417ce6 +url: https://src.opensuse.org/clibs/c-ares ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-11-09 16:32:36.000000000 +0100 @@ -0,0 +1 @@ +.osc ++++++ c-ares-1.34.8.tar.gz -> c-ares-1.34.9.tar.gz ++++++ ++++ 7536 lines of diff (skipped) ++++++ old-gtest.patch ++++++ diff --git a/test/ares-test-main.cc b/test/ares-test-main.cc index d16f34b1..568118af 100644 --- a/test/ares-test-main.cc +++ b/test/ares-test-main.cc @@ -28,6 +28,14 @@ #include "ares-test.h" +#ifdef ARES_TEST_OLD_GTEST +namespace testing { +namespace internal { +extern ::std::vector< ::std::string> g_argvs; +} +} +#endif + #ifdef __APPLE__ # include <mach/mach.h> # include <mach/mach_time.h> @@ -110,5 +118,11 @@ int main(int argc, char* argv[]) { WSACleanup(); #endif +#ifdef ARES_TEST_OLD_GTEST + // Workaround for GTest 1.8.0 double-free of g_argvs upon exit + // across multiple linked shared libraries (libgtest.so and libgmock.so) + std::vector<std::string>().swap(testing::internal::g_argvs); +#endif + return rc; } diff --git a/test/ares-test.h b/test/ares-test.h index e65b264c..494fd097 100644 --- a/test/ares-test.h +++ b/test/ares-test.h @@ -35,6 +35,17 @@ #include "gtest/gtest.h" #include "gmock/gmock.h" +#ifndef INSTANTIATE_TEST_SUITE_P +# define INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P +# define ARES_TEST_OLD_GTEST 1 +# define GetTestSuitePatternHolder GetTestCasePatternHolder +# define GET_5TH_ARG(arg1, arg2, arg3, arg4, arg5, ...) arg5 +# define AddTestPattern_MACRO_CHOOSER(...) GET_5TH_ARG(__VA_ARGS__, AddTestPattern_4, AddTestPattern_3, dummy) +# define AddTestPattern_3(a, b, c) AddTestPattern(a, b, c) +# define AddTestPattern_4(a, b, c, d) AddTestPattern(a, b, c) +# define AddTestPattern(...) AddTestPattern_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__) +#endif + #if defined(HAVE_USER_NAMESPACE) && defined(HAVE_UTS_NAMESPACE) # define HAVE_CONTAINER #endif ++++++ series ++++++ --- /var/tmp/diff_new_pack.ZmdEDR/_old 2026-11-10 16:29:50.484339827 +0100 +++ /var/tmp/diff_new_pack.ZmdEDR/_new 2026-11-10 16:29:50.488339994 +0100 @@ -1,3 +1,2 @@ - -(No newline at EOF) +old-gtest.patch ++++++ test-fixes.patch ++++++ commit d96b3fa9146f71ec77cd1dd536ad4b62307c1a76 Author: Adam Majer <[email protected]> Date: Mon Nov 9 16:26:28 2026 +0100 test: use loopback for dead-server endpoints in SockStateDeliveryTest SockStateDeliveryTest used 192.0.2.1:53 and 198.51.100.1:53 as unreachable DNS server endpoints to keep the connection open during channel teardown operations. In isolated build environments and VMs lacking a default network routea, UDP connect() to these external subnets fails immediately with ENETUNREACH. c-ares maps this to ARES_ECONNREFUSED and terminates the query synchronously inside ares_query_dnsrec(), failing the ASSERT_FALSE(result->done_) check and causing subsequent SawClose() assertions to fail across all three tests (CancelReportsSocketClose, SetServersReportsSocketClose, and DestroyReportsSocketClose). Switch the dead-server addresses to 127.0.0.1:53055 and 127.0.0.1:53056, matching the convention used by other mock tests in ares-test-mock.cc. diff --git a/test/ares-test-mock.cc b/test/ares-test-mock.cc index cc5e6482..77aa0f9c 100644 --- a/test/ares-test-mock.cc +++ b/test/ares-test-mock.cc @@ -4008,9 +4008,9 @@ protected: ASSERT_EQ(ARES_SUCCESS, ares_init_options(chan, &opts, ARES_OPT_SOCK_STATE_CB)); ASSERT_NE(nullptr, *chan); - /* TEST-NET-1, guaranteed not to answer, so the socket is still open when - * the call under test runs. */ - ASSERT_EQ(ARES_SUCCESS, ares_set_servers_csv(*chan, "192.0.2.1:53")); + /* Dead server on loopback, guaranteed not to answer, so the socket is still + * open when the call under test runs. */ + ASSERT_EQ(ARES_SUCCESS, ares_set_servers_csv(*chan, "127.0.0.1:53055")); ares_query_dnsrec(*chan, "www.google.com", ARES_CLASS_IN, ARES_REC_TYPE_A, QueryCallback, result, NULL); @@ -4039,7 +4039,7 @@ TEST_F(SockStateDeliveryTest, SetServersReportsSocketClose) { QueryResult result; OpenConnection(&chan, &data, &result); - EXPECT_EQ(ARES_SUCCESS, ares_set_servers_csv(chan, "198.51.100.1:53")); + EXPECT_EQ(ARES_SUCCESS, ares_set_servers_csv(chan, "127.0.0.1:53056")); EXPECT_TRUE(SawClose(data)) << "ares_set_servers_csv() closed the socket " "without telling the application"; ares_destroy(chan);
