Skip to content

Commit 45cc32c

Browse files
deps: update c-ares to 1.28.1
PR-URL: #52285 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent a63261c commit 45cc32c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+2903
-1863
lines changed

deps/cares/CHANGES

+245-124
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,250 @@
11
Changelog for the c-ares project. Generated with git2changes.pl
22

3+
Version 1.28.1 (30 Mar 2024)
4+
5+
GitHub (30 Mar 2024)
6+
- [Brad House brought this change]
7+
8+
release prep for 1.28.1 (#739)
9+
10+
Brad House (30 Mar 2024)
11+
- ares_search() and ares_getaddrinfo() resolution fails if no search domains
12+
13+
Due to an error in creating the list of domains to search, if no search
14+
domains were configured, resolution would fail.
15+
16+
Fixes Issue: #737
17+
Fix By: Brad House (@bradh352)
18+
19+
- typo
20+
21+
Version 1.28.0 (28 Mar 2024)
22+
23+
GitHub (28 Mar 2024)
24+
- [Brad House brought this change]
25+
26+
Allow configuration value for NDots to be zero (#735)
27+
28+
As per Issue #734 some people use `ndots:0` in their configuration which
29+
is allowed by the system resolver but not by c-ares. Add support for
30+
`ndots:0` and add a test case to validate this behavior.
31+
32+
Fixes Issue: #734
33+
Fix By: Brad House (@bradh352)
34+
35+
Brad House (27 Mar 2024)
36+
- typo
37+
38+
GitHub (27 Mar 2024)
39+
- [Brad House brought this change]
40+
41+
1.28.0 release prep (#733)
42+
43+
Brad House (27 Mar 2024)
44+
- CMake: don't overwrite global required libraries/definitions/includes
45+
46+
When chain building c-ares, global settings were being unset which
47+
could lead to build problems.
48+
49+
Fixes Issue: #729
50+
Fix By: Brad House (@bradh352)
51+
52+
- remove tests that have been disabled forever
53+
54+
- clang-format
55+
56+
- ares_search_dnsrec() takes a const
57+
58+
- sonarcloud: clean up some minor codesmells
59+
60+
GitHub (26 Mar 2024)
61+
- [Brad House brought this change]
62+
63+
mark deprecated functions as such (#732)
64+
65+
Multiple functions have been deprecated over the years, annotate them
66+
with attribute deprecated.
67+
68+
When possible show a message about their replacements.
69+
70+
This is a continuation/completion of PR #706
71+
72+
Fix By: Cristian Rodríguez (@crrodriguez)
73+
74+
Brad House (26 Mar 2024)
75+
- silence clang static analyzer
76+
77+
- silence coverity
78+
79+
- coverity: fix mostly bogus warnings
80+
81+
- fix missing doc
82+
83+
GitHub (25 Mar 2024)
84+
- [Brad House brought this change]
85+
86+
Rework internals to pass around `ares_dns_record_t` instead of binary data (#730)
87+
88+
c-ares has historically passed around raw dns packets in binary form.
89+
Now that we have a new parser, and messages are already parsed
90+
internally, lets pass around that parsed message rather than requiring
91+
multiple parse attempts on the same message. Also add a new
92+
`ares_send_dnsrec()` and `ares_query_dnsrec()` similar to
93+
`ares_search_dnsrec()` added with PR #719 that can return the pointer to
94+
the `ares_dns_record_t` to the caller enqueuing queries and rework
95+
`ares_search_dnsrec()` to use `ares_send_dnsrec()` internally.
96+
97+
Fix By: Brad House (@bradh352)
98+
99+
Brad House (23 Mar 2024)
100+
- tests: mockserver is local, shorten timeouts to make test cases run faster to use less CI resources
101+
102+
- appveyor: disable UWP builds until MSVC version is updated in base image
103+
104+
GitHub (21 Mar 2024)
105+
- [Faraz brought this change]
106+
107+
Include netinet6/in6.h (#728)
108+
109+
On some platforms, "netinet6/in6.h" is not included by "netinet/in.h"
110+
and needs to be included separately.
111+
112+
Fix By: Faraz (@farazrbx)
113+
114+
- [Oliver Welsh brought this change]
115+
116+
Add function ares_search_dnrec() to search for records using the new DNS record parser (#719)
117+
118+
This PR adds a new function `ares_search_dnsrec()` to search for records
119+
using the new DNS record parser.
120+
121+
The function takes an arbitrary DNS record object to search (that must
122+
represent a query for a single name). The function takes a new callback
123+
type, `ares_callback_dnsrec`, that is invoked with a parsed DNS record
124+
object rather than the raw buffer(+length).
125+
126+
The original motivation for this change is to provide support for
127+
[draft-kaplan-enum-sip-routing-04](https://datatracker.ietf.org/doc/html/draft-kaplan-enum-sip-routing-04);
128+
when routing phone calls using an ENUM server, it can be useful to
129+
include identifying source information in an OPT RR options value, to
130+
help select the appropriate route for the call. The new function allows
131+
for more customisable searches like this.
132+
133+
**Summary of code changes**
134+
135+
A new function `ares_search_dnsrec()` has been added and exposed.
136+
Moreover, the entire `ares_search_int()` internal code flow has been
137+
refactored to use parsed DNS record objects and the new DNS record
138+
parser. The DNS record object is passed through the `search_query`
139+
structure by encoding/decoding to/from a buffer (if multiple search
140+
domains are used). A helper function `ares_dns_write_query_altname()` is
141+
used to re-write the DNS record object with a new query name (used to
142+
append search domains).
143+
144+
`ares_search()` is now a wrapper around the new internal code, where the
145+
DNS record object is created based on the name, class and type
146+
parameters.
147+
148+
The new function uses a new callback type, `ares_callback_dnsrec`. This
149+
is invoked with a parsed DNS record object. For now, we convert from
150+
`ares_callback` to this new type using `ares__dnsrec_convert_cb()`.
151+
152+
Some functions that are common to both `ares_query()` and
153+
`ares_search()` have been refactored using the new DNS record parser.
154+
See `ares_dns_record_create_query()` and
155+
`ares_dns_query_reply_tostatus()`.
156+
157+
**Testing**
158+
159+
A new FV has been added to test the new function, which searches for a
160+
DNS record containing an OPT RR with custom options value.
161+
162+
As part of this, I needed to enhance the mock DNS server to expect
163+
request text (and assert that it matches actual request text). This is
164+
because the FV needs to check that the request contains the correct OPT
165+
RR.
166+
167+
**Documentation**
168+
169+
The man page docs have been updated to describe the new feature.
170+
171+
**Futures**
172+
173+
In the future, a new variant of `ares_send()` could be introduced in the
174+
same vein (`ares_send_dnsrec()`). This could be used by
175+
`ares_search_dnsrec()`. Moreover, we could migrate internal code to use
176+
`ares_callback_dnsrec` as the default callback.
177+
178+
This will help to make the new DNS record parser the norm in C-Ares.
179+
180+
---------
181+
182+
Co-authored-by: Oliver Welsh (@oliverwelsh)
183+
184+
- [Brad House brought this change]
185+
186+
Replace configuration file parsers with memory-safe parser (#725)
187+
188+
Rewrite configuration parsers using new memory safe parsing functions.
189+
After CVE-2024-25629 its obvious that we need to prioritize again on
190+
getting all the hand written parsers with direct pointer manipulation
191+
replaced. They're just not safe and hard to audit. It was yet another
192+
example of 20+yr old code having a memory safety issue just now coming
193+
to light.
194+
195+
Though these parsers are definitely less efficient, they're written with
196+
memory safety in mind, and any performance difference is going to be
197+
meaningless for something that only happens once a while.
198+
199+
Fix By: Brad House (@bradh352)
200+
201+
Brad House (12 Mar 2024)
202+
- skip ubsan/asan on debian arm64 due to the compiler getting killed
203+
204+
- ares_init potential memory leak
205+
206+
If initializing using default settings fails, there may be a memory leak of
207+
search domains that were set by system configuration.
208+
209+
Fixes Issue: #724
210+
Fix By: Brad House (@bradh352)
211+
212+
GitHub (12 Mar 2024)
213+
- [Faraz Fallahi brought this change]
214+
215+
simple implementation for isascii where stdlib isascii is not available (#721)
216+
217+
Some platforms don't have the isascii() function. Implement as a macro.
218+
219+
Fix By: Faraz Fallahi (@fffaraz)
220+
221+
Brad House (11 Mar 2024)
222+
- Doxygen: fix typos
223+
224+
Fix reported typos in doxygen-style comments.
225+
226+
Fixes Issue: #722
227+
Credit: @dzalyalov88
228+
229+
- CI: update freebsd image
230+
231+
- CMake: Fix Chain building if CMAKE runtime paths not set
232+
233+
This fixes issues created by #708
234+
235+
Fix By: Brad House (@bradh352)
236+
237+
- silence benign warnings
238+
239+
- Remove acountry completely from code, including manpage
240+
241+
Since acountry cannot be restored due to nerd.dk being decommissioned,
242+
we should completely remove the manpage and source. This also
243+
will resolve issue #718.
244+
245+
Fixes Issue: #718
246+
Fix By: Brad House (@bradh352)
247+
3248
Version 1.27.0 (22 Feb 2024)
4249

5250
GitHub (22 Feb 2024)
@@ -6100,127 +6345,3 @@ Yang Tse (10 Mar 2013)
61006345

61016346
Daniel Stenberg (9 Mar 2013)
61026347
- ares.h: there is no ares_free_soa function
6103-
6104-
Yang Tse (9 Mar 2013)
6105-
- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility
6106-
6107-
- ares_inet_ntop.3: s/socklen_t/ares_socklen_t
6108-
6109-
- configure: use XC_LIBTOOL for portability across libtool versions
6110-
6111-
- xc-lt-iface.m4: provide XC_LIBTOOL macro
6112-
6113-
- Makefile.am: use AM_CPPFLAGS instead of INCLUDES
6114-
6115-
- inet_ntop.c: s/socklen_t/ares_socklen_t
6116-
6117-
- inet_ntop.c: s/socklen_t/ares_socklen_t for portability
6118-
6119-
Daniel Stenberg (19 Feb 2013)
6120-
- ares.h: s/socklen_t/ares_socklen_t for portability
6121-
6122-
- ares_inet_ntop.3: 4th argument is socklen_t!
6123-
6124-
- spell inet correctly!
6125-
6126-
- ares_inet_pton/ntop: cleanup
6127-
6128-
Make sure that the symbols are always exported and present in c-ares.
6129-
6130-
Make the headers prefixed with 'ares'.
6131-
6132-
Removed the inet_ntop.h version as it no longer features any content.
6133-
6134-
- ares_inet_ntop/ares_inet_pton: added man pages
6135-
6136-
Yang Tse (15 Feb 2013)
6137-
- [Gisle Vanem brought this change]
6138-
6139-
curl_setup_once.h: definition of HAVE_CLOSE_S defines sclose() to close_s()
6140-
6141-
- [Gisle Vanem brought this change]
6142-
6143-
config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32
6144-
6145-
- [Gisle Vanem brought this change]
6146-
6147-
config-dos.h: define strerror() to strerror_s_() for High-C
6148-
6149-
Daniel Stenberg (13 Feb 2013)
6150-
- ares_get_datatype: removed unused function
6151-
6152-
it was also wrongly named as internal functions require two underscores
6153-
6154-
- ares__bitncmp: use two underscores for private functions
6155-
6156-
It used a single one previously making it look like a public one
6157-
6158-
- ares__generate_new_id: moved to ares_query.c
6159-
6160-
... and ares__rc4 is turned into a local static function.
6161-
6162-
- ares__swap_lists: make private and static
6163-
6164-
... since there's only one user, make it static within ares_process.c
6165-
6166-
Yang Tse (13 Feb 2013)
6167-
- Makefile.msvc: add four VS version strings
6168-
6169-
Daniel Stenberg (13 Feb 2013)
6170-
- ares_expand_name.3: clarify how to free the data
6171-
6172-
Yang Tse (30 Jan 2013)
6173-
- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 2
6174-
6175-
- Fix a pair of single quotes to double quotes.
6176-
6177-
URL: http://curl.haxx.se/mail/lib-2013-01/0355.html
6178-
Reported by: Tor Arntsen
6179-
6180-
- zz40-xc-ovr.m4: fix 'wc' detection - follow-up
6181-
6182-
- Take into account that 'wc' may return leading spaces and/or tabs.
6183-
6184-
- Set initial IFS to space, tab and newline.
6185-
6186-
- zz40-xc-ovr.m4: fix 'wc' detection
6187-
6188-
- Take into account that 'wc' may return leading spaces.
6189-
6190-
- Set internationalization behavior variables.
6191-
6192-
Tor Arntsen analyzed and reported the issue.
6193-
6194-
URL: http://curl.haxx.se/mail/lib-2013-01/0351.html
6195-
6196-
- zz40-xc-ovr.m4: check another three basic utilities
6197-
6198-
- zz40-xc-ovr.m4: 1.0 interface stabilization
6199-
6200-
- Stabilization results in 4 public interface m4 macros:
6201-
XC_CONFIGURE_PREAMBLE
6202-
XC_CONFIGURE_PREAMBLE_VER_MAJOR
6203-
XC_CONFIGURE_PREAMBLE_VER_MINOR
6204-
XC_CHECK_PATH_SEPARATOR
6205-
- Avoid one level of internal indirection
6206-
- Update comments
6207-
- Drop XC_OVR_ZZ40 macro
6208-
6209-
- zz40-xc-ovr.m4: emit witness message in configure BODY
6210-
6211-
This avoids witness message in output when running configure --help,
6212-
while sending the message to config.log for other configure runs.
6213-
6214-
- zz40-xc-ovr.m4: truly do version conditional overriding
6215-
6216-
- version conditional overriding
6217-
- catch unexpanded XC macros
6218-
- fix double words in comments
6219-
6220-
- zz40-xc-ovr.m4: fix variable assignment of subshell output bashism
6221-
6222-
Tor Arntsen analyzed and reported the issue.
6223-
6224-
URL: http://curl.haxx.se/mail/lib-2013-01/0306.html
6225-
6226-
- zz40-xc-ovr.m4: reinstate strict AC_REQUIRE macro dependencies

0 commit comments

Comments
 (0)