Curl Asynchronous RESolver library for applications which
need to perform DNS queries without blocking, or
need to perform multiple DNS queries in parallel.
Primary applications are servers with multiple clients and GUI programs.
For more information see the project home page:
https://c-ares.org/
The following packages have been upgraded in the Cygwin distribution:
- libcares-devel 1.34.8
- libcares2 1.34.8
For changes since the previous Cygwin release, see below or:
https://c-ares.org/changelog.html
2026-07-07 1.34.8
This is a bugfix release.
Bugfixes:
- Revert "Mark parameters in callbacks as const" which shipped in 1.34.7.
Changing the parameter types of the `ares_callback`, `ares_host_callback`,
and `ares_nameinfo_callback` function pointer typedefs was an unintended
API break: existing applications with the historical non-const callback
signatures no longer compiled, particularly in C++ where function pointer
types must match exactly. The read-only nature of the callback parameters
is now documented instead.
2026-07-06 1.34.7
This is a security release.
Security:
- CVE-2026-33630. Use-after-free / double-free in c-ares' query-completion
handling, remotely triggerable via ares_getaddrinfo() over TCP.
- CPU-exhaustion denial of service via unbounded DNS name compression pointer
chains.
- Memory-amplification denial of service via unvalidated DNS header record
counts.
Changes:
- `ares_getaddrinfo()`: handle a NULL node per POSIX and implement
`ARES_AI_PASSIVE`.
- Mark parameters in callbacks as const.
- Correct `ARES_CLASS_HESOID` misspelling to `ARES_CLASS_HESIOD`.
Bugfixes:
- Fix sticky server recovery when all servers have failures.
- Fix UDP socket exhaustion regression: retire connections per-connection, not
via server failure count.
- Guard DNS record binary length overflow.
- Prevent integer overflow in allocation size calculations.
- Prevent overflow in ares_array allocation size calculations.
- Prevent integer overflow in buffer size calculation.
- Add overflow checks to ares_buf_ensure_space().
- Skip name compression offsets beyond the 14-bit pointer limit.
- ares_dns_parse: reject name compression in RDATA where not permitted (RFC
3597).
- ares_dns_parse: reject responses with more than one OPT record (RFC 6891).
- Discard oversized UDP datagrams instead of truncating the length frame.
- Route numeric config parsing through range-checked ares_str_parse_uint.
- Replace atoi-based port parsing with validated helper.
- Defer TCP connection error handling until DNS responses are parsed.
- Prevent undefined-behavior left shift in ares_calc_query_timeout().
- Use unsigned type for ares_round_up_pow2_u64 to avoid undefined behavior.
- Fix undefined behavior in ares_buf_replace() pointer arithmetic.
- ares_array: reset offset when array becomes empty.
- ares_iface_ips: add ARES_IFACE_IP_NONE zero enum value.
- ares_sysconfig_files: recognize AIX netsvc.conf bind4/local4 tokens.
- Use safe string construction in Windows sysconfig join path.
- Fix zero-length RAW_RR losing type metadata during parsing.
- Fix RAW_RR type tostr/fromstr roundtrip mismatch.
- Fix NULL dereference for ifa netmask.
- adig: fix negated option prefix parsing.
- Use UnregisterWaitEx to prevent use-after-free on Win32.
- Add NULL check after ares_malloc_zero in Windows UTF8 conversion.
- Fix NULL dereference after ares_malloc_zero in Win32 IOCP event add.
- Fix microsecond overflow in ares_queue_wait_empty timeout.
- Fix NULL dereference in ares_buf_replace() on NULL buf.
- Initialize *read_bytes in ares_socket_recvfrom().
- Fix memory leak of binbuf in ares_buf_parse_dns_binstr_int.
- Fix memory leak of qcache entry on key allocation failure.
- Fix memory leak of buf in ares_dns_multistring_combined() on OOM.
- Fix memory leaks on error paths in two functions.
- Fix memory leak of buckets in ares_htable_dict_keys() error path.
- Fix memory leak of bucket->key in ares_htable_dict_insert error path.
- Fix additional memory leaks.
- Prevent corrupt addrinfo nodes on sockaddr allocation failure.
- Fix two logic bugs in DNS cookie handling.
- Fix linked list INSERT_BEFORE corruption and array insertdata_first ordering.
- Fix HASH_IDX macro missing parentheses.
- Fix malloc(0) in ares_htable_all_buckets on empty table.
- Fix wrong sizeof in QNX confstr() call truncating domain names.
- Clear probe pending flag after timeout.
- Fix incorrect check for empty wide string.
- Handle strdup failure.
- doc: reference ares_free_string(), not ares_free().
--
*** CYGWIN-ANNOUNCE UNSUBSCRIBE INFO ***
The easiest way to unsubscribe is to visit
<https://cygwin.com/mailman/options/cygwin-announce>, and click 'Unsubscribe'.
If you need more information on unsubscribing, start reading here:
<https://sourceware.org/lists.html#unsubscribe>.