1 Changelog for the c-ares project. Generated with git2changes.pl 2 3Version 1.18.1 (26 Oct 2021) 4 5bradh352 (26 Oct 2021) 6- missed version 7 8- 1.18.1 release prep 9 10- ares_getaddrinfo() was returning the wrong size for ai_addrlen 11 12 ai_addrlen was erroneously returning 16 bytes instead of the 13 sizeof(struct sockaddr_in6). This is a regression introduced 14 in 1.18.0. 15 16 Reported by: James Brown <jbrown@easypost.com> 17 Fix By: Brad House (@bradh352) 18 19- Windows: autotools force linking to iphlpapi 20 21GitHub (26 Oct 2021) 22- [Gregor Jasny brought this change] 23 24 Fix typo detected by lintian (#434) 25 26 typo in docs for ares_parse_uri_reply 27 28 Fix By: Gregor Jasny (@gjasny) 29 30Version 1.18.0 (25 Oct 2021) 31 32bradh352 (25 Oct 2021) 33- replace Travis badge with Cirrus-CI badge 34 35- c-ares 1.18.0 release prep 36 37GitHub (21 Oct 2021) 38- [Jérôme Duval brought this change] 39 40 Haiku: port (#431) 41 42 Port for Haiku. Slight CMake changes, header changes, and resolv.conf/hosts paths specific to Haiku. 43 44 Port By: Jérôme Duval (@korli) 45 46bradh352 (19 Oct 2021) 47- valgrind: fix reported invalid read 48 49- make sure distcheck runs 50 51- detect oddities and skip test if necessary 52 53- fix null ptr deref in strlen 54 55- bend over backwards for testing file access, something is weird on debian 56 57- chmod(fn, 0) is failing on debian 58 59- maybe process needs to be called 60 61- split test output 62 63- clean up a couple of compiler warnings 64 65- use helper function for addrinfo to simplify code 66 67- INSTANTIATE_TEST_CASE_P -> INSTANTIATE_TEST_SUITE_P as new convention in googletest 68 69- gmock: update from 1.8.0 to 1.11.0 70 71- Cirrus-CI: fix debian arm build 72 73- Cirrus-CI: more updates for proper testing 74 75- install proper packages for asan and analyze 76 77- fix crash in tests 78 79- try to disable container tests 80 81- need g++ for tests on debian 82 83- try cirrus-ci again 84 85- whitespace 86 87- start bringing up cirrus-ci 88 89- prep for adding new ci 90 91- fix cut and paste error 92 93GitHub (18 Oct 2021) 94- [Brad House brought this change] 95 96 RFC6761: special case "localhost" (#430) 97 98 As per RFC6761 Section 6.3, "localhost" lookups need to be special cased to return loopback addresses, and not forward queries to recursive dns servers. 99 100 We first look up via files (/etc/hosts or equivalent), and if that fails, we then attempt a system-specific address enumeration for loopback addresses (currently Windows-only), and finally fallback to ::1 and 127.0.0.1. 101 102 Fix By: Brad House (@bradh352) 103 Fixes Bug: #399 104 105- [Brad House brought this change] 106 107 Reimplement ares_gethostbyname() by wrapping ares_getaddrinfo() (#428) 108 109 ares_gethostbyname() and ares_getaddrinfo() do a lot of similar things, however ares_getaddrinfo() has some desirable behaviors that should be imported into ares_gethostbyname(). For one, it sorts the address lists for the most likely to succeed based on the current system routes. Next, when AF_UNSPEC is specified, it properly handles search lists instead of first searching all of AF_INET6 then AF_INET, since ares_gethostbyname() searches in parallel. Therefore, this PR should also resolve the issues attempted in #94. 110 111 A few things this PR does: 112 113 1. ares_parse_a_reply() and ares_parse_aaaa_reply() had very similar code to translate struct ares_addrinfo into a struct hostent as well as into struct ares_addrttl/ares_addr6ttl this has been split out into helper functions of ares__addrinfo2hostent() and ares__addrinfo2addrttl() to prevent this duplicative code. 114 115 2. ares_getaddrinfo() was apparently never honoring HOSTALIASES, and this was discovered once ares_gethostbyname() was turned into a wrapper, the affected test cases started failing. 116 117 3. A slight API modification to save the query hostname into struct ares_addrinfo as the last element of name. Since this is the last element, and all user-level instances of struct ares_addrinfo are allocated internally by c-ares, this is not an ABI-breaking change nor would it impact any API compatibility. This was needed since struct hostent has an h_name element. 118 119 4. Test Framework: MockServer tests via TCP would fail if more than 1 request was received at a time which is common when ares_getaddrinfo() queries for both A and AAAA records simultaneously. Infact, this was a long standing issue in which the ares_getaddrinfo() test were bypassing TCP alltogether. This has been corrected, the message is now processed in a loop. 120 121 5. Some tests had to be updated for overall correctness as they were invalid but somehow passing prior to this change. 122 123 Change By: Brad House (@bradh352) 124 125bradh352 (9 Oct 2021) 126- ares_getaddrinfo() missing sanity check to fix #426 127 128- ares_getaddrinfo(): continue to next domain in search if query returns ARES_ENODATA 129 130 Some DNS servers may behave badly and return a valid response with no data, in this 131 case, continue on to the next search domain, but cache the result. 132 133 Fixes Bug: #426 134 Fix By: Brad House (@bradh352) 135 136- Allow '/' as a valid character for a returned name 137 138 As of c-ares 1.17.2, a CNAME an in-addr.arpa delegation broke due 139 to not allowing '/'. This needs to be allowed to not break valid 140 functionality. 141 142 Fixes Bug: #427 143 Reported By: Adrian (@leftshift) 144 Fix By: Brad House (@bradh352) 145 146Daniel Stenberg (5 Oct 2021) 147- libcares.pc.in: update the URL 148 149bradh352 (8 Sep 2021) 150- ares_expand_name should allow underscores (_) as SRV records legitimately use them 151 152 c-ares 1.17.2 introduced response validation to prevent a security issue, however 153 it did not have (_) listed as a valid character for domain name responses which 154 caused issues when a CNAME referenced a SRV record which contained underscores. 155 156 While RFC2181 section 11 does explicitly state not to do validation, that applies 157 to servers not clients. 158 159 Fixes: #424 160 Fix By: Brad House (@bradh352) 161 162Daniel Stenberg (7 Sep 2021) 163- domain: update to use c-ares.org 164 165 Closes #423 166 167- mailing list: moved to lists.haxx.se 168 169GitHub (3 Sep 2021) 170- [Biswapriyo Nath brought this change] 171 172 CMake: Fix build in cygwin (#422) 173 174 As cygwin environment has both socket.h and winsock2.h headers check WIN32 not to include the later one here 175 176 Fix By: Biswapriyo Nath (@Biswa96) 177 178bradh352 (23 Aug 2021) 179- make building more verbose 180 181- add appveyor cmake/mingw static-only build 182 183GitHub (17 Aug 2021) 184- [Sinan Kaya brought this change] 185 186 CMake: lower case advapi32 for cross-building with mingw (#420) 187 188 When cross compiling with yocto's meta-mingw layer, getting a dependency 189 error. 190 191 This is caused by the fact that advapi32 is lower case in mingw builds. 192 193 Fix By: Sinan Kaya <sinan.kaya@microsoft.com> 194 195bradh352 (17 Aug 2021) 196- autotools: add ax_check_gnu_make.m4 197 198- autotools: add ax_require_defined.m4 199 200- autotools: dont use newer AC_CHECK_INCLUDES_DEFAULT, don't quote AC_ERROR_MSG 201 202- import more files needed by newer ax_code_coverage.m4 203 204- import more files needed by newer ax_code_coverage.m4 205 206- work around autoreconf -fiv first call returning 'error: too many loops' 207 208- restore zz40-xc-ovr.m4 209 210- autotools: processed configure.ac through autoupdate 211 212- autotools. update ax_code_coverage.m4 to latest. don't use deprecated AC_HELP_STRING 213 214- pull out some old autotools cruft 215 216GitHub (17 Aug 2021) 217- [Felix Yan brought this change] 218 219 Provide ares_nameser.h as a public interface (#417) 220 221 NodeJS needs ares_nameser.h as a pubic header. 222 223 Fixes: #415 224 Fix By: Felix Yan (@felixonmars) 225 226- [Felix Yan brought this change] 227 228 Fix building when latest ax_code_coverage.m4 is imported (#418) 229 230 ax_code_coverage.m4 dropped the @CODE_COVERAGE_RULES@ macro, so we need to switch to the latest recommendation from the m4 file. This requires updates to Makefile.am. 231 232 Fix By: Felix Yan (@felixonmars) 233 234bradh352 (12 Aug 2021) 235- bump version to match current release 236 237GitHub (12 Aug 2021) 238- [dhrumilrana brought this change] 239 240 z/OS minor update, add missing semicolon in ares_init.c (#414) 241 242 Build fix for z/OS 243 244 Fix by: Dhrumil Rana (@dhrumilrana) 245 246- [Daniel Bevenius brought this change] 247 248 add build to .gitignore (#410) 249 250 This commit adds the build directory to be ignored by git. 251 252 The motivation for adding this to .gitignore as opposed to 253 .git/info/exclude is that the CMake example in INSTALL.md uses build 254 as the name of the directory to be used by CMake. This will cause 255 git to report build as an untracked file. 256 257 Fix By: Daniel Bevenius (@danbev) 258 259- [Martin Holeš brought this change] 260 261 Add support for URI(Uniform Resource Identifier) records. (#411) 262 263 Add ares_parse_uri_reply() for parsing URI DNS replies. 264 265 Fix By: Martin Holeš (@martin-256) 266 267Daniel Stenberg (10 Aug 2021) 268- ares_getaddrinfo.3: available since 1.16.0 269 270- README.md: use https:// links 271 272Version 1.17.2 (24 Jul 2021) 273 274bradh352 (24 Jul 2021) 275- fix typo 276 277- prep for 1.17.2 release 278 279GitHub (30 Jun 2021) 280- [jeanpierrecartal brought this change] 281 282 Replace strdup() with ares_strdup() (#408) 283 284 strdup() is used in src/lib/ares_parse_a_reply.c and src/lib/ares_parse_aaaa_reply.c whereas allocated memory is freed using ares_free(). 285 286 Bug: 407 287 Fix By: Jean-pierre Cartal (@jeanpierrecartal) 288 289- [Brad House brought this change] 290 291 Validate hostnames in DNS responses and discard from malicious servers (#406) 292 293 To prevent possible users having XSS issues due to intentionally malformed DNS replies, validate hostnames returned in responses and return EBADRESP if they are not valid. 294 295 It is not clear what legitimate issues this may cause at this point. 296 297 Bug Reported By: philipp.jeitner@sit.fraunhofer.de 298 Fix By: Brad House (@bradh352) 299 300bradh352 (11 Jun 2021) 301- ares_expand_name(): fix formatting and handling of root name response 302 303 Fixes issue introduced in prior commit with formatting and handling 304 of parsing a root name response which should not be escaped. 305 306 Fix By: Brad House 307 308- ares_expand_name() should escape more characters 309 310 RFC1035 5.1 specifies some reserved characters and escaping sequences 311 that are allowed to be specified. Expand the list of reserved characters 312 and also escape non-printable characters using the \DDD format as 313 specified in the RFC. 314 315 Bug Reported By: philipp.jeitner@sit.fraunhofer.de 316 Fix By: Brad House (@bradh352) 317 318GitHub (15 Apr 2021) 319- [HALX99 brought this change] 320 321 Fix can't get dns server on macos and ios (#401) 322 323 If DNS configuration didn't include search domains on MacOS (or iOS) it would throw an error instead of ignoring. 324 325 Fix By: @halx99 326 327- [catalinh-bd brought this change] 328 329 Bugfix/crash in ares sortaddrinfo (#400) 330 331 The bug was generated because there was no check for the number 332 of items in the list and invalid memory was accesed when the list 333 was empty. There is a check for null after calling malloc but on 334 some systems it always returns a valid address for size equals 0. 335 Relates To: #392, 0903dcecabca283d0fa771632892dc7592b7a66d 336 337 Fix By: @catalinh-bd 338 339bradh352 (2 Mar 2021) 340- Null deref if ares_getaddrinfo() is terminated with ares_destroy() 341 342 ares_freeaddrinfo() was not checking for a Null ptr during cleanup of 343 an aborted query. 344 345 Once that was resolved it uncovered another possible issue with 346 multiple simultaneous underlying queries being outstanding and 347 possibly prematurely cleaning up the handle. 348 349 Reported By: Michael Kourlas 350 Fix By: Brad House (@bradh352) 351 352GitHub (18 Feb 2021) 353- [Brad House brought this change] 354 355 CMake: RANDOM_FILE not defined #397 356 357 RANDOM_FILE was never defined by cmake, causing RC4 key generation to use the less secure rand() method. 358 359 Also, due to clashes with chain-building from other projects (e.g. curl) that may define RANDOM_FILE, this was renamed to CARES_RANDOM_FILE. 360 361 This is the proposed change for #396 362 363 Fix By: Brad House (@bradh352) 364 365- [Anton Danielsson brought this change] 366 367 CMake: fix Make install for iOS/MacOS (#395) 368 369 INSTALL TARGETS were missing the BUNDLE DESTINATION 370 371 Fix By: Anton Danielsson (@anton-danielsson) 372 373- [František Dvořák brought this change] 374 375 Fix build with autotools out of source tree (#394) 376 377 Add missing include directory, which fixes the build with autotools in separated build directory. 378 379 Fix By: František Dvořák (@valtri) 380 381bradh352 (15 Jan 2021) 382- fuzzing: HAVE_CONFIG_H may not be defined so cannot include ares_setup.h. Its not needed even though we include ares_nameser.h 383 384- remove redundant header checks 385 386- properly detect netinet/tcp.h on openbsd 387 388- more portability updates 389 390- renamed nameser.h to ares_nameser.h requires Makefile.inc update for distributed files 391 392- more portability updates 393 394- remove bad files 395 396- portability updates for test cases 397 398- Portability Updates for arpa/nameser.h (#388) 399 400 There is too much inconsistency between platforms for arpa/nameser.h and arpa/nameser_compat.h for the way the current files are structured. Still load the respective system files but make our private nameser.h more forgiving. 401 402 Fixes: #388 403 Fix By: Brad House (@bradh352) 404 405- ares_parse_ptr_reply() handle NULL for addr/addr_len. Fixes #392 406 407 NodeJS passes NULL for addr and 0 for addrlen parameters to ares_parse_ptr_reply(). On systems where malloc(0) returned NULL, this would cause the function to return ARES_ENOMEM, but the cleanup wasn't handled properly and would crash. 408 409 This patche fixes that bug, and also hardens ares_free_hostent() to not leak memory during cleanup. 410 411 Fixes: #392 412 Fix By: Brad House (@bradh352) 413 414- Define behavior of malloc(0) 415 416 Some systems may return either NULL or a valid pointer on malloc(0). c-ares should never call malloc(0) so lets return NULL so we're more likely to find an issue if it were to occur. 417 418GitHub (24 Dec 2020) 419- [dhrumilrana brought this change] 420 421 z/OS: port (#390) 422 423 Port c-ares to z/OS. 424 425 Fix By: Dhrumil Rana (@dhrumilrana) 426 427- [vburdo brought this change] 428 429 Use unbuffered stdio for /dev/urandom to read only requested data (#391) 430 431 Buffered fread() reads 4096 bytes which is completely unnecessary and potentially may cause problems. 432 I discovered this on private linux configuration where custom /dev/urandom implementation has poor performance. 433 434 Fix By: @vburdo 435 436- [Jay Freeman (saurik) brought this change] 437 438 This relative header #include needs to use quotes. (#386) 439 440 Fix By: Jay Freeman (@saurik) 441 442bradh352 (23 Nov 2020) 443- Win32: Fix tools build with autotools static library 444 When c-ares is being built as static on Win32, CARES_STATICLIB must 445 be defined, but it wasn't being pulled in for the tools. 446 447 Fixes: #384 448 Fix By: Brad House (@bradh352) 449 450- Loosen requirements for static c-ares library when building tests 451 452 It appears that when building tests, it would hardcode enabling building 453 of the c-ares static library. This was probably due to Windows limitations 454 in symbol visibility. 455 456 This change will use the static library if it exists for tests, always. 457 Otherwise, it will only forcibly enable static libraries for tests on 458 Windows. 459 460 Fixes: #380 461 Fix By: Brad House (@bradh352) 462 463- Remove legacy comment about ahost/acountry/adig targets 464 465- Distribute fuzzinput/fuzznames for fuzz tests 466 467 The fuzz test files were not being distributed. This doesn't appear to be 468 a regression, it looks like they have never been distributed. 469 470 Fixes: #379 471 Fix By: Brad House (@bradh352) 472 473Version 1.17.1 (19 Nov 2020) 474 475GitHub (19 Nov 2020) 476- [Brad House brought this change] 477 478 Travis: add iOS target built with CMake (#378) 479 480 Issue #377 suggested that CMake builds for iOS with c-ares were broken. This PR adds an automatic Travis build for iOS CMake. 481 482 Fix By: Brad House (@bradh352) 483 484bradh352 (18 Nov 2020) 485- fix build 486 487GitHub (18 Nov 2020) 488- [Fabrice Fontaine brought this change] 489 490 External projects were using non-public header ares_dns.h, make public again (#376) 491 492 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. 493 494 Fix By: Fabrice Fontaine (@ffontaine) 495 496bradh352 (17 Nov 2020) 497- note that so versioning has moved to configure.ac 498 499- note about 1.17.1 500 501- fix sed gone wrong 502 503GitHub (17 Nov 2020) 504- [Daniel Stenberg brought this change] 505 506 autotools cleanup (#372) 507 508 * remove: install-sh mkinstalldirs 509 510 They're generated when needed, no need to store in it. 511 512 * buildconf: remove custom logic with autoreconf 513 514 Fix By: Daniel Stenberg (@bagder) 515 516bradh352 (17 Nov 2020) 517- attempt to fix 1.17.0 release distribution issues 518 519Version 1.17.0 (16 Nov 2020) 520 521bradh352 (16 Nov 2020) 522- 1.17.0 release prep 523 524- ares_getaddrinfo(): duplicate hints ai_socktype and ai_protocol into output 525 526 ai_socktype and ai_protocol were ignored from the hints input. They are now 527 duplicated into the output as expected. Currently no sanity checks on 528 proper values are taking place. 529 530 Fixes: #317 531 Fix By: Brad House (@bradh352) 532 533- ares_parse_{a,aaaa}_reply could return larger *naddrttls than passed in 534 535 If there are more ttls returned than the maximum provided by the requestor, then 536 the *naddrttls response would be larger than the actual number of elements in 537 the addrttls array. 538 539 This bug could lead to invalid memory accesses in applications using c-ares. 540 541 This behavior appeared to break with PR #257 542 543 Fixes: #371 544 Reported By: Momtchil Momtchev (@mmomtchev) 545 Fix By: Brad House (@bradh352) 546 547GitHub (5 Nov 2020) 548- [Dustin Lundquist brought this change] 549 550 docs: ares_set_local_ip4() uses host byte order (#368) 551 552 Properly document brain-dead behavior of ares_set_local_ip4() using host byte order instead of expected network byte order. 553 554 Fix By: Dustin Lundquist <d.lundquist@tempered.io> 555 556- [Łukasz Marszał brought this change] 557 558 empty hquery->name could lead to invalid memory access (#367) 559 560 If hquery->name is empty (=="\0"), &hquery->name[strlen(hquery->name)-1] would point to "random" place in memory. This is causing some of my address sanitizer tests to fail. 561 562 Fix By: Łukasz Marszał (@lmarszal) 563 564bradh352 (28 Sep 2020) 565- Fix OSSFuzz reported issue in CAA reply parsing 566 567 OSS-Fuzz is reporting a use-of-uninitialized-value: 568 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=26012 569 570 Reported By: David Drysdale (@daviddrysdale) 571 572GitHub (26 Sep 2020) 573- [David Hotham brought this change] 574 575 fuzz CAA parsing (#363) 576 577 Add fuzz support for CAA parsing 578 579 Fix By: David Hotham (@dimbleby) 580 581- [Daniela Sonnenschein brought this change] 582 583 Allow parsing of CAA Resource Record (#360) 584 585 CAA (Certification Authority Authorization) was introduced in RFC 6844. 586 This has been obsoleted by RFC 8659. This commit added the possibility 587 to query CAA resource records with adig and adds a parser for CAA 588 records, that can be used in conjunction with ares_query(3). 589 590 Closes Bug: #292 591 Fix By: Daniela Sonnenschein (@lxdicted) 592 593Daniel Stenberg (17 Sep 2020) 594- docs: remove the html and pdf make targets 595 596 They're rarely used in our daily work flow and mostly just add friction, 597 598 Closes #362 599 600bradh352 (14 Sep 2020) 601- ares_process needs to always include nameser.h as it has compat 602 603- Define T_OPT if system doesn't provide it 604 605GitHub (12 Sep 2020) 606- [Gisle Vanem brought this change] 607 608 Change the mailman links (#358) 609 610 Links when wrapping become misleading. Insert newline to prevent wrapping. 611 612 Fix By: Gisle Vanem (@gvanem) 613 614- [Gisle Vanem brought this change] 615 616 [adig] Update man-page for the '-x' option (#357) 617 618 Fix By: Gisle Vanem (@gvanem) 619 620- [Gisle Vanem brought this change] 621 622 [adig] add '-x' option. (#356) 623 624 Added a 'dig-style' '-x' option. Also support '-xx' for a 625 IPv6 bit-string PTR query. 626 627 Fix By: Gisle Vanem (@gvanem) 628 629bradh352 (12 Sep 2020) 630- fix indentation 631 632- ns_t_opt -> T_OPT 633 634GitHub (12 Sep 2020) 635- [Gisle Vanem brought this change] 636 637 Fixes for Watt-32 on djgpp + Windows (#355) 638 639 No longer any relation to libcurl since '<libcurl-root>/packages/DOS/common.dj' is dropped. 640 This Makefile.dj has been tested on Win-10 only (using the Windows hosted djgpp cross compiler). 641 642 Fix By: Gisle Vanem (@gvanem) 643 644- [Gisle Vanem brought this change] 645 646 Fixes for Watt-32 on Windows and MSDOS (#354) 647 648 Move the prototype to 'ares_private.h'. 649 650 Fix By: Gisle Vanem (@gvanem) 651 652bradh352 (11 Sep 2020) 653- update path for include 654 655- remove stale information 656 657- remove stale information 658 659Brad House (9 Sep 2020) 660- silence compiler warnings 661 662- Remove stale msvc files from makefile 663 664GitHub (9 Sep 2020) 665- [Brad House brought this change] 666 667 Reorganize source tree (#349) 668 669 Originally started by Daniel Stenberg (@bagder) with #123, this patch reorganizes the c-ares source tree to have a more modern layout. It also fixes out of tree builds for autotools, and automatically builds the tests if tests are enabled. All tests are passing which tests each of the supported build systems (autotools, cmake, nmake, mingw gmake). There may be some edge cases that will have to be caught later on for things I'm not aware of. 670 671 Fix By: Brad House (@bradh352) 672 673Brad House (1 Sep 2020) 674- remove CURLDEBUG as per #82 675 676GitHub (1 Sep 2020) 677- [Erik Lax brought this change] 678 679 Detect remote DNS server does not support EDNS as per RFC 6891 (#244) 680 681 EDNS retry should be based on FORMERR returned without an OPT RR record as per https://tools.ietf.org/html/rfc6891#section-7 rather than just treating any unexpected error condition as a reason to disable EDNS on the channel. 682 683 Fix By: Erik Lax (@eriklax) 684 685Brad House (27 Aug 2020) 686- Fix for #345, don't use 'true' use 1 687 688GitHub (27 Aug 2020) 689- [Seraphime Kirkovski brought this change] 690 691 ares_gethostbyname: Fix AF_UNSPEC support when using an ip address (#204) 692 693 fake_hostent() was not supporting AF_UNSPEC, so when an ip address was specified when using AF_UNSPEC it would attempt to do a DNS lookup rather than returning a fake hostent using the ip address. 694 695 Fix By: Seraphime Kirkovski (@Seraphime) 696 697- [apenn-msft brought this change] 698 699 Tests should use dynamic system-assigned ports rather than static port (#346) 700 701 The c-ares test suite was hardcoded to use port 5300 (and possibly 5301, 5302) for the test suite. Especially in containers, there may be no guarantee these ports are available and cause tests to fail when they could otherwise succeed. Instead, request the system to assign a port to use dynamically. This is now the default. To override, the test suite still takes the "-p <port>" option as it always has and will honor that. 702 703 Fix By: Anthony Penniston (@apenn-msft) 704 705Brad House (25 Aug 2020) 706- Unset members of the addr struct contain garbage values (#343) 707 708 When generating the ares_sockaddr data by getaddrinfo() it was only filling 709 in certain members while leaving others uninitialized. This left garbage 710 data if a user tried to use the unset values. memset() the ares_sockaddr 711 to 0 prior to filling in the values to prevent this. 712 713 Reported By: @SmorkalovG 714 Fix By: Brad House (@bradh352) 715 716GitHub (24 Aug 2020) 717- [Jonathan Maye-Hobbs brought this change] 718 719 FQDN with trailing period should be queried first with larger ndot value (#345) 720 721 If a query is performed for dynamodb.us-east-1.amazonaws.com. with ndots=5, it was attempting to search the search domains rather than just attempting the FQDN that was passed it. This patch now at least attempts the FQDN first. 722 723 We may need to determine if we should abort any further searching, however as is probably intended. 724 725 Fix by: Jonathan Maye-Hobbs (@wheelpharoah) 726 727- [Gisle Vanem brought this change] 728 729 Update acountry.c country code list (#341) 730 731 Updated country_list[]: 732 * 2-letter ISO-3166 country-codes. 733 * Add, rename some names + codes in accordance with latest table at https://en.wikipedia.org/wiki/ISO_3166-1. 734 735 Fix By: Gisle Vanem (@gvanem) 736 737- [Bulat Gaifullin brought this change] 738 739 Test case should honor flag HAVE_WRITEV rather than WIN32 (#344) 740 741 Test cases where not honoring the HAVE_WRITEV flag but instead using WIN32 to determine if WRITEV was available or not. This patch fixes that. 742 743 Fix By: Bulat Gaifullin (@bgaifullin) 744 745Brad House (18 Jul 2020) 746- Ensure c89 support 747 748 A couple of for loops in Mac-specific code were using integer declarations 749 inside a for loop. Move the declaration to the top of the preceding 750 code block to retain c89 compliance. 751 752 Reported By: Jeffrey Walton 753 754GitHub (2 Jul 2020) 755- [Fionn Fitzmaurice brought this change] 756 757 Avoid buffer overflow in RC4 loop comparison (#336) 758 759 The rc4 function iterates over a buffer of size buffer_len who's maximum 760 value is INT_MAX with a counter of type short that is not guaranteed to 761 have maximum size INT_MAX. 762 763 In circumstances where short is narrower than int and where buffer_len 764 is larger than the maximum value of a short, it may be possible to loop 765 infinitely as counter will overflow and never be greater than or equal 766 to buffer_len. 767 768 The solution is to make the comparison be between types of equal width. 769 This commit defines counter as an int. 770 771 Fix By: Fionn Fitzmaurice (@fionn) 772 773- [anonymoushelpishere brought this change] 774 775 Updated help information for adig, acountry, and ahost. (#334) 776 777 Provide more descriptive help information for various utilities. 778 779 Fix By: @anonymoushelpishere 780 781- [lutianxiong brought this change] 782 783 avoid read-heap-buffer-overflow (#332) 784 785 Fix invalid read in ares_parse_soa_reply.c found during fuzzing 786 787 Fixes Bug: #333 788 Fix By: lutianxiong (@ltx2018) 789 790- [Ivan Baidakou brought this change] 791 792 Fix: sizeof(sizeof(addr.saX)) -> sizeof(addr.saX) in readaddrinfo (#331) 793 794 Looks like a sed-gone-wrong, a sizeof inside of a sizeof. 795 796 Fix By: Ivan Baidakou (@basiliscos) 797 798Version 1.16.1 (11 May 2020) 799 800Brad House (11 May 2020) 801- c-ares 1.16.1 release prep 802 803- update travis to use xcode11.4 804 805- Prevent possible double-free in ares_getaddrinfo() if ares_destroy() is called 806 807 In the event that ares_destroy() is called prior to ares_getaddrinfo() completing, 808 it would result in an invalid read and double-free due to calling end_hquery() twice. 809 810 Reported By: Jann Horn @ Google Project Zero 811 812GitHub (30 Apr 2020) 813- [shelley vohr brought this change] 814 815 fix: windows UNICODE incompatibilities with ares_getaddrinfo (#328) 816 817 Fixes the following compatibility issues: 818 * Use RegQueryValueExA instead of RegQueryValueEx 819 * Use ExpandEnvironmentStringsA instead of ExpandEnvironmentStrings 820 * Use RegOpenKeyExA instead of RegOpenKeyExA 821 * Use GetWindowsDirectoryA instead of GetWindowsDirectoryA 822 823 Fix By: Shelley Vohr (@codebytere) 824 Closes: #327 825 826Brad House (13 Apr 2020) 827- travis: CloudFlare does not allow T_ANY requests, so live tests that use it fail. Disable. 828 829- travis: bump macos image to the latest 830 831- cast-align warnings are false for struct sockaddr, silence 832 833 Create a macro to silence false cast-align warnings when casting 834 struct sockaddr * to struct sockaddr_in * and struct sockaddr_in6 *. 835 836 Fix By: Brad House (@bradh352) 837 838- MacOS: Enable libresolv support for retrieving DNS servers like iOS does. 839 840GitHub (10 Apr 2020) 841- [Dmitry Igrishin brought this change] 842 843 CMake: Populate the INCLUDE_DIRECTORIES property of installed targets (#323) 844 845 Populate the INCLUDE_DIRECTORIES property of installed targets 846 847 Fix By: Dmitry Igrishin (@dmitigr) 848 849Brad House (10 Apr 2020) 850- travis: make valgrind use cmake for tests 851 852- dont try to use libtool to run valgrind 853 854- valgrind requires libtool installed to wrap tests 855 856- scan build 7 857 858- fix travis live test 859 860- add debug for travis 861 862- try without sudo 863 864- attempt to modernize travis build environment 865 866GitHub (6 Apr 2020) 867- [Teemu R brought this change] 868 869 Allow TXT records on CHAOS qclass (#321) 870 871 Some DNS servers intentionally "misuse" the obsoleted CHAOS (CH) qclass to provide things like `version.bind`, `version.server`, `authors.bind`, `hostname.bind` and `id.server`. 872 873 C-ares was not allowing such use cases. 874 875 Fix By: Teemu R. (@rytilahti) 876 877Brad House (5 Apr 2020) 878- Remove warnings from ares_getaddrinfo.3 man page 879 880 As reported in #319, non-standard macros of .IN were used. 881 Replace with .RS/.RE. 882 883 Fixes: #319 884 Fix By: Brad House (@bradh352) 885 886- ares_getaddrinfo man page render better for man2html 887 888- update man pages to render better for man2html 889 890Version 1.16.0 (12 Mar 2020) 891 892Brad House (12 Mar 2020) 893- 1.16.0 release notes draft 894 895- attempt to fix double-free introduced in e0517f9 896 897GitHub (12 Mar 2020) 898- [David Drysdale brought this change] 899 900 test: fuzzer input triggering double free (#315) 901 902 OSS-Fuzz has reported a double-free with the fuzzer input file 903 included here; run with: 904 ./test/aresfuzz test/fuzzinput/clusterfuzz-5637790584012800 905 906 Bisecting the failure points to commit e0517f97d988 ("Parse SOA records 907 from ns_t_any response (#103)") 908 909- [Brad House brought this change] 910 911 CMake: Install Manpages (#314) 912 913 CMake wasn't installing manpages. 914 915 Fixes #297 916 Fix By: Brad House (@bradh352) 917 918- [Brad House brought this change] 919 920 Enable cmake tests for AppVeyor (#313) 921 922 Tests require linking against the static library on Windows otherwise the symbols are not exported for internals being tested. 923 924 Fix By: Brad House (@bradh352) 925 926Brad House (11 Mar 2020) 927- Add AppVeyor badge 928 929- bump c-ares version to 1.16.0. test AppVeyor integration. 930 931GitHub (11 Mar 2020) 932- [Brad House brought this change] 933 934 replace all usages of inet_addr() with ares_inet_pton() which is more proper (#312) 935 936 Replace usage of inet_addr() with ares_inet_pton() which is more appropriate and fixes issues with legitimate addresses like 255.255.255.0. IPv6 already used this. 937 938 Fixes #309 939 Fix By: Brad House (@bradh352) 940 941- [Brad House brought this change] 942 943 CMake: Generate WinPDB files during build (#311) 944 945 Build and Install PDB (Windows Debug Symbol) files if supported by underlying system. 946 947 Also update AppVeyor to test cmake builds. 948 949 Fixes #245 950 Fix By: Piotr Pietraszkiewicz (@ppietrasa) and Brad House (@bradh352) 951 952- [Brad House brought this change] 953 954 CMake: Rework library function checking (#310) 955 956 CHECK_LIBRARY_EXISTS(), while it takes a function name, does not actually verify the function exists in the library being evaluated. Instead, if the function is found in any dependent library, and the referenced library also exists, it returns true. This is not desirable. 957 958 Wrap with a Macro to change the behavior. 959 960 Fixes: #307 961 Fix By: Brad House (@bradh352) 962 963- [Dron Rathore brought this change] 964 965 Parse SOA records from ns_t_any response (#103) 966 967 Added the capability of parsing SOA record from a response buffer of ns_t_any type query, this implementation doesn't interfere with existing T_SOA query's response as that too is treated as a list of records. The function returns ARES_EBADRESP if no SOA record is found(as per RFC). 968 969 The basic idea of sticking to RFC that a ns_t_any too should return an SOA record is something open for discussion but I have kept the functionality intact as it was previously i.e the function returns ARES_EBADRESP if it doesn't find a SOA record regardless of which response it is parsing i.e. T_SOA or T_ANY. 970 971 Note that asking for T_ANY is generally a bad idea: 972 - https://blog.cloudflare.com/what-happened-next-the-deprecation-of-any/ 973 - https://tools.ietf.org/html/draft-ietf-dnsop-refuse-any 974 975 Bug: #102 976 Fix By: Dron Rathore (@DronRathore) 977 978- [Stephen Bryant brought this change] 979 980 Added CPack functionality for generating RPM or DEB packages (#283) 981 982 Added CPack functionality for generating RPM or DEB packages 983 984 ie: run `cpack -G RPM` (or "DEB") after building with CMake. 985 986 The current configuration creates 3 separate packages for the shared library, 987 the development files and the tools. 988 989 Fix By: Stephen Bryant (@bf-bryants) 990 991- [tjwalton brought this change] 992 993 ares_gethostbyname: Return ENODATA if no valid A or AAAA record found (#304) 994 995 ares_gethostbyname() was returning ESUCCESS when no A or AAAA record was found but a CNAME pointing nowhere was present. ENODATA should be returned instead, however the hosts pointer will still be present to provide the alias list. 996 997 * Return ENODATA if no valid A or AAAA record found 998 * Fix and update test ParseAReplyNoData. 999 * Add test for new ENODATA behaviour in ares_gethostbyname. 1000 1001 Fixes Bug #303 1002 Fix By: @tjwalton 1003 1004- [Michal Rostecki brought this change] 1005 1006 test: Separate live tests from SetServers* tests (#299) 1007 1008 Before this change, SetServers, SetServersPorts and SetServersCSV 1009 contained test cases trying to make DNS queries with the google.com 1010 hostname, which requires Internet connectivity. Tests with that 1011 requirement should be defined in the ares-test-live.cc file and contain 1012 "Live" prefix to filter them out with `--gtest_filter=-*.Live*` on 1013 machines without Internet connectivity. 1014 1015 Fix By: Michal Rostecki (@mrostecki) 1016 1017- [Adam Majer brought this change] 1018 1019 Only count valid addresses when response parsing (#302) 1020 1021 When ares_parse_a_reply or ares_parse_aaaa_reply is called in case 1022 where another AAAA and A responses exist, the resulting ares_addrttl 1023 count is invalid and the structure points to gibberish. 1024 1025 This is a regression since 1.15. 1026 1027 Issue: https://github.com/c-ares/c-ares/issues/300 1028 Fix By: Adam Majer (@AdamMajer) 1029 1030Brad House (24 Dec 2019) 1031- [Kyle Edwards brought this change] 1032 1033 CMake: Provide c-ares version in package export file (#296) 1034 1035 The CMake package export file should provide version information. 1036 1037 Fix By: Kyle Edwards (@KyleFromKitware) 1038 1039- [Ben Noordhuis brought this change] 1040 1041 Accept invalid /etc/resolv.conf lookup values, ability to build container tests (#274) 1042 1043 * Add CARES_BUILD_CONTAINER_TESTS CMake option to add ability to build the Linux-only containerized tests. 1044 * Accept invalid /etc/resolv.conf lookup values 1045 1046 Before this commit invalid `lookup` values resulted in c-ares not using 1047 any lookups without any clear indication why. After this commit it uses 1048 the default "fb". 1049 1050 Fix By: Ben Noordhuis (@bnoordhuis) 1051 1052- [Christian Ammer brought this change] 1053 1054 Parallel A and AAAA lookups in `ares_getaddrinfo` (#290) 1055 1056 A and AAAA lookups for ares_getaddrinfo() are now performed in parallel. 1057 1058 For this change `ares_search` was removed from `ares_getaddrinfo`. 1059 Instead `ares_query` in combination with `next_dns_lookup` are 1060 doing the suffix search. 1061 1062 Adding support for `.onion` addresses which are tested by 1063 `TEST_F(DefaultChannelTest, GetAddrinfoOnionDomain)` 1064 1065 Fix By: Christian Ammer (@ChristianAmmer) 1066 1067- [Vy Nguyen brought this change] 1068 1069 Move variables into the block where it is used to avoid unused-vars (#281) 1070 1071 Warning uncovered with [-Werror, -Wunused-variables] 1072 1073 Fix By: Vy Nguyen (@oontvoo) 1074 1075- [Vy Nguyen brought this change] 1076 1077 Rename local macros to avoid conflicting with system ones and remove unsed variables. (Otherwise code will break once compiled with [-Werror,-Wmacro-redefined,-Wunused-variable] ) (#280) 1078 1079 Fix new getaddrinfo code to not redefine macros on some systems. 1080 1081 Fix By: Vy Nguyen (@oontvoo) 1082 1083- [Egor Pugin brought this change] 1084 1085 [ares_getenv] Return NULL in all cases. (#279) 1086 1087 if ares_getenv is defined, it must return a value on all platforms. 1088 1089 Fix By: Egor Pugin (@egorpugin) 1090 1091- [Abhishek Arya brought this change] 1092 1093 Add OSS-Fuzz fuzzing badge (#278) 1094 1095 Adds based on instructions at 1096 https://google.github.io/oss-fuzz/getting-started/new-project-guide/#status-badge 1097 1098 Patch By: Abhishek Arya (@inferno-chromium) 1099 1100- [Peter Eisentraut brought this change] 1101 1102 ares_init_options.3: Fix layout (#275) 1103 1104 7e6af8e inserted the documentation of resolvconf_path in the middle of 1105 the item for ednspsz, leading to broken layout. Fix that. 1106 1107 Fix By: Peter Eisentraut (@petere) 1108 1109- [Gregor Jasny brought this change] 1110 1111 manpages: Fix typos detected by lintian (#269) 1112 1113 1114 Fix By: Gregor Jasny (@gjasny) 1115 1116- [lifenjoiner brought this change] 1117 1118 keep command line usage up to date (#256) 1119 1120 adig and ahost built-in help did not match args taken. 1121 1122 Fix-By: @lifenjoiner 1123 1124- [Dan Noé brought this change] 1125 1126 ares-test.cc: Handle nullptr in AddrInfo ostream. (#268) 1127 1128 The const AddrInfo& argument to operator<< overload for AddrInfo can be 1129 a nullptr unique_ptr. Handle this explicitly by printing {nullptr} if 1130 the rest of the function cannot be safely executed. 1131 1132 Fix-by: Dan Noé <dpn@google.com> 1133 1134- [Dan Noé brought this change] 1135 1136 Add missing limits.h include from ares_getaddrinfo.c (#267) 1137 1138 This files references INT_MAX, but does not include limits.h. This can 1139 cause a build failure on some platforms. Include limits.h if we have it. 1140 1141 Fix-by: Dan Noé <dpn@google.com> 1142 1143- [Andrew Selivanov brought this change] 1144 1145 fix fuzzer docs and add missing getaddrinfo docs (#265) 1146 1147 There is a fix for a bit outdated clang fuzzer docs and ares_getaddrinfo docs. 1148 1149 Fix By: Andrew Selivanov (@ki11roy) 1150 1151- [Andrew Selivanov brought this change] 1152 1153 Fix leak and crash in ares_parse_a/aaaa_reply (#264) 1154 1155 * fix leak if naddress of particular type found 1156 * fix segfault when wanted ttls count lesser than count of result records 1157 * add fuzzer input files that trigger problems (from #263) 1158 1159 Reported-By: David Drysdale (@daviddrysdale) 1160 Fix-By: Andrew Selivanov (@ki11roy) 1161 1162- [Andrew Selivanov brought this change] 1163 1164 fix segfault when parsing wrong type of record (#262) 1165 1166 Fixes segfault when trying to ares_parse_aaaa with AF_INET and vise versa. 1167 1168 Fix By: Andrew Selivanov (@ki11roy) 1169 1170- work around mingw compile failure 1171 1172- c++ requires explicit casts 1173 1174- support EnvValue on Windows by implementing setenv/unsetenv 1175 1176- [Andrew Selivanov brought this change] 1177 1178 getaddrinfo enhancements (#257) 1179 1180 * Service support has been added to getaddrinfo. 1181 * ares_parse_a/aaaa_record now share code with the addrinfo parser. 1182 * Private ares_addrinfo structure with useful extensions such as ttls (including cname ttls), 1183 as well as the ability to list multiple cnames in chain of lookups 1184 1185 Work By: Andrew Selivanov @ki11roy 1186 1187- [Andrew Selivanov brought this change] 1188 1189 fix ares__sortaddrinfo, use wrappers for sock_funcs (#258) 1190 1191 Some socket functions weren't exposed for use by other areas of the library. Expose 1192 those and make use of them in ares__sortaddrinfo(). 1193 1194 Fix By: Andrew Selivanov (@ki11roy) 1195 1196- Fix c89 compilation support broken by .onion rejection changes 1197 1198 Move .onion check lower after all variables have been declared. 1199 1200 Bug: #246 1201 1202- [kedixa brought this change] 1203 1204 getaddrinfo: callback must be called on bad domain (#249) 1205 1206 Due to an order of incrementing the remaining queries and calling ares_query, on a bad domain 1207 the registered callback wouldn't be called. 1208 1209 Bug: #248 1210 Fixed-By: @kedixa 1211 1212- [Darrin W. Cullop brought this change] 1213 1214 Windows ARM/ARM64 requires AdvApi32 (#252) 1215 1216 Fix link issues caused by missing library that appears to only be required on ARM (though 1217 docs don't list this restriction). Doesn't hurt to require it everywhere. 1218 1219 Bug: #251 1220 Fixed-By: Darrin Cullop (@dwcullop) 1221 1222- [kedixa brought this change] 1223 1224 getaddrinfo: avoid infinite loop in case of NXDOMAIN(#240) (#242) 1225 1226 There are two possible causes for infinite loops fo NXDOMAIN, based on how many dots are in the domain name (one for < ARES_OPT_NDOTS and one for >= ARES_OPT_NDOTS), where it will repeat the same query over and over as the hquery->next_domain doesn't increment. 1227 1228 Fix By: @kedixa 1229 1230- Portability fix for ares__sortaddrinfo() 1231 1232 replace uint32_t with unsigned int and socklen_t with ares_socklen_t 1233 1234 By: Brad House 1235 1236- [Khaidi Chu brought this change] 1237 1238 fix: init bufp before reject .onion to make it can be free correctly (#241) 1239 1240 When querying a .onion domain, it returns directly without setting bufp to NULL. A subsequent free() that occurs can cause a segmentation fault. 1241 1242 Fix By: Khaidi Chu (@XadillaX) 1243 1244- [Andrew Selivanov brought this change] 1245 1246 Add ares__sortaddrinfo() to support getaddrinfo() sorted results (#239) 1247 1248 This is a port of RFC 6724 compliant sorting function from Android Bionic project: 1249 https://android.googlesource.com/platform/bionic/+/e919b116d35aa7deb24ddece69c491e24c3b0d6f/libc/netbsd/net/getaddrinfo.c 1250 1251 The latest version is essentially the same, except two additional parameters to test connection with (mark/uid): 1252 https://android.googlesource.com/platform/bionic/+/master/libc/dns/net/getaddrinfo.c 1253 1254 Please note that even that version has some restrictions. It doesn't support some rules from RFC 6724: 1255 1256 Rule 3 (Avoid deprecated addresses) 1257 Rule 4 (Prefer home addresses) 1258 Rule 7 (Prefer native transport) 1259 1260 Submitted By: Andrew Selivanov (@ki11roy) 1261 1262- [Christian Ammer brought this change] 1263 1264 Increase portability of `ares-test-mock-ai.cc` (#235) 1265 1266 * using portable ares_inet_pton and updated includes in ares-test-mock-ai 1267 * forgot to remove deleted ares-test-ai.cc in Makefile.inc 1268 1269 Fix By: Christian Ammer (@ChristianAmmer) 1270 1271- [Fabrice Fontaine brought this change] 1272 1273 m4/xc-cc-check.m4: use XC_CHECK_BUILD_FLAGS (#236) 1274 1275 Use XC_CHECK_BUILD_FLAGS instead of XC_CHECK_USER_FLAGS. 1276 Otherwise it complains of CPPFLAGS in CFLAGS. 1277 [Retrieved from: 1278 https://git.buildroot.net/buildroot/tree/package/c-ares/0001-use_check_build_instead_of_check_user.patch] 1279 1280 Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> 1281 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 1282 Submitted by: Fabrice Fontaine 1283 1284- [Christian Ammer brought this change] 1285 1286 Bugfix for `ares_getaddrinfo` and additional unit tests (#234) 1287 1288 This PullRequest fixes a bug in the function add_to_addrinfo which task is to add new addrinfo items to the ai_next linked list. Also additional unit tests for testing ares_getaddrinfo will be added: 1289 1290 Additional mock server test classes (ares-test-mock-ai.cc): 1291 MockTCPChannelTestAI 1292 MockExtraOptsTestAI 1293 MockNoCheckRespChannelTestAI 1294 MockEDNSChannelTestAI 1295 RotateMultiMockTestAI 1296 NoRotateMultiMockTestAI 1297 1298 Additional live tests (ares-test-live-ai.cc): 1299 LiveGetHostByNameV4 1300 LiveGetHostByNameV6 1301 LiveGetHostByNameV4AndV6 1302 1303 Fix By: Christian Ammer (@ChristianAmmer) 1304 1305- [Christian Ammer brought this change] 1306 1307 Remaining queries counter fix, additional unit tests for `ares_getaddrinfo` (#233) 1308 1309 Remaining queries counter fix, added tests (ParallelLookups, 1310 SearchDomains, SearchDomainsServFailOnAAAA). Removed unnecessary 1311 if and commented code in test. 1312 1313 Fix By: Christian Ammer (@ChristianAmmer) 1314 1315- [Christian Ammer brought this change] 1316 1317 Add initial implementation for ares_getaddrinfo (#112) 1318 1319 Initial implementation for ares_getaddrinfo(). It is NOT compliant with RFC6724, though 1320 it is expected to come closer to conformance prior to the next release. 1321 1322 Features not supported include sorted addresses and honoring of service and hints 1323 parameters. 1324 1325 Implementation by: Christian Ammer (@ChristianAmmer) 1326 1327- [Ben Noordhuis brought this change] 1328 1329 test: fix bad expectation in ipv6 localhost test (#227) 1330 1331 The LiveGetLocalhostByAddrV6 test expected to see "localhost" in the 1332 result when doing an address-to-name lookup for ::1 but on my system 1333 that resolves to "ip6-loopback" because of this stanza in /etc/hosts: 1334 1335 $ grep ^::1 /etc/hosts 1336 ::1 ip6-localhost ip6-loopback 1337 1338 Fix By: Ben Noordhuis (@bnoordhuis) 1339 Bug: #85 1340 1341- [Ben Noordhuis brought this change] 1342 1343 ares_version.h: bump version (#230) 1344 1345 Version change not committed from maketgz.sh 1346 1347 Bug: #229 1348 1349Daniel Stenberg (24 Oct 2018) 1350- ares_library_init_android.3: minor syntax edits, fixed AVAILABILITY 1351 1352Version 1.15.0 (23 Oct 2018) 1353 1354Brad House (23 Oct 2018) 1355- last minute 1.15.0 addition 1356 1357- [Ben Noordhuis brought this change] 1358 1359 Report ARES_ENOTFOUND for .onion domain names as per RFC7686. (#228) 1360 1361 Quoting RFC 7686: 1362 1363 Name Resolution APIs and Libraries (...) MUST either respond 1364 to requests for .onion names by resolving them according to 1365 [tor-rendezvous] or by responding with NXDOMAIN. 1366 1367 A legacy client may inadvertently attempt to resolve a .onion 1368 name through the DNS. This causes a disclosure that the client 1369 is attempting to use Tor to reach a specific service. Malicious 1370 resolvers could be engineered to capture and record such leaks, 1371 which might have very adverse consequences for the well-being 1372 of the user. 1373 1374 Bug: #196 1375 Fix By: Ben Noordhuis @bnoordhuis 1376 1377- prepare for c-ares 1.15.0 release 1378 1379- AIX Build Fix 1380 1381 AIX attempts to include both nameser_compat.h and onameser_compat.h. It appears 1382 the proper fix is to define _USE_IRS so that only nameser_compat.h is used. 1383 1384 Bug: #224 1385 Fix By: Brad House (@bradh352) 1386 1387- Fix crash in ares_dup() due to new ARES_OPT_RESOLVCONF 1388 1389 ares_dup() calls ares_init_options() by making its own fake option 1390 mask since the original mask isn't stored but ARES_OPT_RESOLVCONF 1391 was always set, instead of conditionally set. This caused a crash 1392 because ares_strdup() isn't NULL-safe if no custom path was set. 1393 1394 Made ares_dup() set ARES_OPT_RESOLVCONF conditionally. 1395 1396 Fix By: Brad House (@bradh352) 1397 1398- [Sarat Addepalli brought this change] 1399 1400 Add ares_init_options() configurability for path to resolv.conf file 1401 1402 Add resolvconf_path to end of struct ares_options with ARES_OPT_RESOLVCONF option 1403 so on Unix-like systems a custom path can be specified. If no path is specified, 1404 /etc/resolv.conf is used like normal. 1405 1406 Fix By: Sarat Addepalli @SirR4T 1407 Fixes Bug: #220 1408 Review By: Brad House @bradh352 1409 1410- remove stale variables 1411 1412- fix prototype name for ares_strsplit_free() 1413 1414- add missing prototype 1415 1416- simplify ares_strsplit() and create ares_strsplit_free() helper function 1417 1418- missing ares_strsplit.h from HHEADERS for inclusion in distribution 1419 1420- [Ruslan Baratov brought this change] 1421 1422 Add CARES_BUILD_TOOLS CMake option (#214) 1423 1424 Add ability to exclude building of tools (adig, ahost, acountry) in CMake. This should also close #200. 1425 1426 Fix By: Ruslan Baratov (@ruslo) 1427 Bug: #200 1428 1429- [flyingdutchman23 brought this change] 1430 1431 Style. Whitespace cleanup. (#213) 1432 1433 Small whitespace cleanups. 1434 1435 Fix By: @flyingdutchman23 1436 1437- [John Schember brought this change] 1438 1439 Android: Support for domain search suffix (#211) 1440 1441 Fixes issue #207. Uses LinkProperties.getDomains() to get a list of search domains and adds them to the suffix list. This also adds a new helper function to split strings into an array based on multiple delimiters replacing multiple other functions for dealing with string splitting. 1442 1443 Submitter: John Schember (@user-none) 1444 Fixes: #207 1445 Approved-by: Brad House (@bradh352) 1446 1447- [afalin brought this change] 1448 1449 Improve DNS suffixes extracting from WinNT registry (#202) 1450 1451 Join all global and connection specific suffix lists. Use 'HKLM\Software\Policies\Microsoft\Windows NT\DNSClient\SearchList', 'HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Domain' as global suffix lists. 1452 1453 Fix By: @afalin 1454 1455- Be consistent with indention in CMakeLists.txt 1456 1457 The imported TRANSFORM_MAKEFILE_INC function from curl used space indention 1458 but the rest of the file used tabs. Go ahead and make it tabs for 1459 consistency as well. 1460 1461 Committed By: Brad House 1462 1463- [flyingdutchman23 brought this change] 1464 1465 Fix modern gcc warning: argument to 'sizeof' in 'strncpy' call is the same expression as the source 1466 1467 Silence warning about using src to determine number of bytes to copy. 1468 In this case it doesn't matter whether it is `src` or `dest`. So there 1469 is no functionality change. 1470 1471 Bug: #210 1472 Fix By: @flyingdutchman23 1473 1474- [Andi Schnebinger brought this change] 1475 1476 fix stringop-overflow warning of GCC (#201) 1477 1478 When using a modern GCC to compile c-ares, there is a stringop-overflow warning. 1479 This patch simply silences the false-positive warning, there is no actual code flaw. 1480 1481 Bug: https://github.com/c-ares/c-ares/pull/201 1482 Fixed By: Andi Schnebinger @Iniesta8 1483 1484GitHub (18 May 2018) 1485- [David Drysdale brought this change] 1486 1487 travis: do coverage in "coverage" build (#195) 1488 1489 Fixes #194, a mistake from commit a255081f2c3c ("travis: Only do 1490 coverage/distcheck on normal build") 1491 1492Brad House (17 May 2018) 1493- [Brad Spencer brought this change] 1494 1495 Apply the IPv6 server blacklist to all nameserver sources, not just Windows (#193) 1496 1497 For #164, I mentioned that it seemed like the IPv6 nameserver blacklist should apply to all OSes. In a mailing list post, @bradh352 agreed and suggested that I file a PR to make it so. 1498 1499 This moves the blacklist check from being Windows-specific to being a general feature of config_nameservers(), no matter the nameserver source. It also simplifies the ares_ipv6_server_blacklisted() implementation to not parse and re-parse the blacklisted IPv6 addresses from strings on every check. I think they're almost as easy to read as a sequence of hex bytes in an array initializer, and it's definitely less work on each trip through the code. 1500 1501 Fix By: Brad Spencer @b-spencer 1502 PR: https://github.com/c-ares/c-ares/pull/193 1503 1504- [Brad Spencer brought this change] 1505 1506 Fix warnings emitted by MSVC when using -W4 (#192) 1507 1508 These changes fix a few warnings emitted by recent versions of MSVC when compiling with -W4. Half of the changes are in Windows-specific code, and the other half should be safe no matter the compiler or OS. 1509 1510 The allocation function change is probably the only one that needs explanation. MSVC gives warnings about the function pointers not being stable across DLL boundaries or something to that effect, so for Windows, I've made them be called indirectly, which at least made the compiler happy. I can't say I've tested every linking combination on Windows with them before or after the change, but it seems harmless. 1511 1512 Fix By: Brad Spencer @b-spencer 1513 PR: https://github.com/c-ares/c-ares/pull/192 1514 1515- [David Hotham brought this change] 1516 1517 Prevent changing name servers while queries are outstanding (#191) 1518 1519 Changing name servers doesn't work, per #41. Better to return an error code than to crash. 1520 1521 Fix-by: David Hotham @dimbleby 1522 1523David Drysdale (15 May 2018) 1524- [Tobias Nießen brought this change] 1525 1526 Fix comment in ares_rules.h (#189) 1527 1528Brad House (6 May 2018) 1529- [Brad Spencer brought this change] 1530 1531 Harden and rationalize c-ares timeout computation (#187) 1532 1533 * Harden and rationalize c-ares timeout computation 1534 * Remove the rand() part of the timeout calculation completely. 1535 1536 When c-ares sends a DNS query, it computes the timeout for that request as follows: 1537 1538 timeplus = channel->timeout << (query->try_count / channel->nservers); 1539 timeplus = (timeplus * (9 + (rand () & 7))) / 16; 1540 I see two issues with this code. Firstly, when either try_count or channel->timeout are large enough, this can end up as an illegal shift. 1541 1542 Secondly, the algorithm for adding the random timeout (added in 2009) is surprising. The original commit that introduced this algorithm says it was done to avoid a "packet storm". But, the algorithm appears to only reduce the timeout by an amount proportional to the scaled timeout's magnitude. It isn't clear to me that, for example, cutting a 30 second timeout almost in half to roughly 17 seconds is appropriate. Even with the default timeout of 5000 ms, this algorithm computes values between 2812 ms and 5000 ms, which is enough to cause a slightly latent DNS response to get spuriously dropped. 1543 1544 If preventing the timers from all expiring at the same time really is desirable, then it seems better to extend the timeout by a small factor so that the application gets at least the timeout it asked for, and maybe a little more. In my experience, this is common practice for timeouts: applications expect that a timeout will happen at or after the designated time (but not before), allowing for delay in detecting and reporting the timeout. Furthermore, it seems like the timeout shouldn't be extended by very much (we don't want a 30 second timeout changing into a 45 second timeout, either). 1545 1546 Consider also the documentation of channel->timeout in ares_init_options(): 1547 1548 The number of milliseconds each name server is given to respond to a query on the first try. (After the first try, the timeout algorithm becomes more complicated, but scales linearly with the value of timeout.) The default is five seconds. 1549 1550 In the current implementation, even the first try does not use the value that the user supplies; it will use anywhere between 56% and 100% of that value. 1551 1552 The attached patch attempts to address all of these concerns without trying to make the algorithm much more sophisticated. After performing a safe shift, this patch simply adds a small random timeout to the computed value of between 0 ms and 511 ms. I could see limiting the random amount to be no greater than a proportion of the configured magnitude, but I can't see scaling the random with the overall computed timeout. As far as I understand, the goal is just to schedule retries "not at the same exact time", so a small difference seems sufficient. 1553 1554 UPDATE: randomization removed. 1555 1556 Closes PR #187 1557 Fix by: Brad Spencer 1558 1559- distribute ares_android.h 1560 1561 Distribute ares_android.h when a release distribution package is 1562 created. 1563 1564 Reported By: Andrey Khranovsky 1565 Bug: https://c-ares.haxx.se/mail/c-ares-archive-2018-04/0000.shtml 1566 1567- ares_set_servers_csv() on failure should not leave channel in a bad state 1568 1569 If bad data is passed to ares_set_servers_csv() or 1570 ares_set_servers_ports_csv() it will clear the existing channel 1571 configured DNS servers, then a call to ares_send() will fail due 1572 to a bad malloc which may have undefined behavior. 1573 1574 The fix now only clears existing servers on success. An additional 1575 sanity check was added in ares_send() to ensure nservers >= 1 or 1576 will result in ARES_ESERVFAIL. 1577 1578 Bug: https://c-ares.haxx.se/mail/c-ares-archive-2018-03/0000.shtml 1579 Reported-by: Francisco Sedano Crippa 1580 1581- docs: Not all manpages are listed 1582 1583 Some docs aren't installed or not showing up on 1584 https://c-ares.haxx.se/docs.html 1585 due to not being listed in Makefile.inc. Add missing docs and 1586 ensure docs are alphabetized. 1587 1588Version 1.14.0 (16 Feb 2018) 1589 1590Daniel Stenberg (16 Feb 2018) 1591- ares_android.c: fix warning: ISO C forbids an empty translation unit 1592 1593- RELEASE-NOTES: some more work we did and people who helped 1594 1595Brad House (16 Feb 2018) 1596- travis: skip Autotools style testing for cmake 1597 1598 Fix cmake test build by skipping autotools portion of test script. 1599 1600- travis: standardize CMake test off of Autotools tests 1601 1602 Instead of running 'make test', run the tests directly like autotools 1603 does. It provides more verbose output. 1604 1605- travis: Enable building tests for CMake 1606 1607 Travis should auto-build and run tests for cmake builds now that 1608 PR #168 is merged. 1609 1610- fix version in pkgconfig 1611 1612- Add version update to CMakeLists in maketgz 1613 1614- Release prep. Add support for pkgconfig in cmake, set versions appropriately 1615 1616Gregor Jasny (15 Feb 2018) 1617- CMake: Add tests 1618 1619Brad House (14 Feb 2018) 1620- [Gregor Jasny brought this change] 1621 1622 Use cmake3 package provided by Ubuntu (#182) 1623 1624- Cmake 3.1 instead of 3.2.1 should be the minimum 1625 1626- Update RELEASE-NOTES and RELEASE-PROCEDURE.md to prepare for next release 1627 1628- get rid of c++ style comments 1629 1630- Use trusty for all builds, precise is EOL. Update clang and cmake versions. 1631 1632- Current CMakeLists.txt doesn't support 2.8.12 anymore, we need to bump the version to 3.2.1 minimum 1633 1634- Re-organize sections in INSTALL.md and add CMake section 1635 1636- [Sergey Kolomenkin brought this change] 1637 1638 remove compilation warnings in MSVC (#47) 1639 1640- document handling of timeouts for ares_process and ares_process_fd to close PR #57 1641 1642- As per Issue #155, since we do not require gethostname() during init, if it fails, there's no reason for init to fail as it is only used to populate the domain 1643 1644GitHub (7 Feb 2018) 1645- [David Drysdale brought this change] 1646 1647 Document WSAStartup requirement (#180) 1648 1649David Drysdale (6 Feb 2018) 1650- [Antonio Tajuelo brought this change] 1651 1652 Added coderelease.io badge to readme.md for letting people subscribe to new versions (#174) 1653 1654- [Sheel Bedi brought this change] 1655 1656 Update year in LICENSE.md to 2018 (#170) 1657 1658GitHub (4 Feb 2018) 1659- [David Drysdale brought this change] 1660 1661 travis: use VM not container for {L,A}SAN builds (#177) 1662 1663 As per https://github.com/travis-ci/travis-ci/issues/9033, container 1664 based builds do not currently allow ptrace, which is used by LSAN and 1665 ASAN. 1666 1667Brad House (3 Feb 2018) 1668- [acthompson-google-com brought this change] 1669 1670 Android JNI code leaks local references in some cases (#175) 1671 1672 * Add Google LLC to AUTHORS. 1673 1674 * android: Explicitly delete all JNI local references, and cache JNI method IDs at initialization. 1675 1676 * android: Only return ARES_ENOTINITIALIZED on failures in initialization code. 1677 1678Gregor Jasny (2 Jan 2018) 1679- Embed fused Google Test 1.8.0 1680 1681Brad House (21 Dec 2017) 1682- [John Schember brought this change] 1683 1684 android: Check returns for obj and classes are not NULL. Document API levels for various Android functions and objects used. (#166) 1685 1686- CARES_CHECK_TYPE should reference variable so a warning is not produced for -Werror compatibility 1687 1688- [Brad Spencer brought this change] 1689 1690 Fix computation of IPv6 blacklist mask for values of netmask > 8. (#164) 1691 1692David Drysdale (14 Dec 2017) 1693- travis: Only do coverage/distcheck on normal build 1694 1695- travis: only do pip install on Linux 1696 1697- travis: only test in IPv4 mode 1698 1699 Travis' Trusty environment does not support IPv6. 1700 1701- test: allow restriction to one IP address family 1702 1703- [Roman Teterin brought this change] 1704 1705 Fix a typo in init_by_resolv_conf (#160) 1706 1707Brad House (11 Dec 2017) 1708- @gvanem says MSVC -RTCc option fails, looks erroneous to me, but the additional mask is harmless 1709 1710- Fix some other mingw warnings 1711 1712- Issue #143, get rid of windows build warning due to passing 'char **' to argument expecting 'const char **' 1713 1714- [Gregor Jasny brought this change] 1715 1716 Distribute CMake files (#130) 1717 1718- Android variants may not have __system_property_get 1719 1720 Some android systems like ARM64 may not have the __system_property_get 1721 symbol in libc (but still have it in the public headers). Detect this 1722 condition at build time. The __system_property_get method of retrieving 1723 name servers is deprecated as of Oreo so should strictly be a fallback 1724 mechanism anyhow. 1725 1726David Drysdale (9 Nov 2017) 1727- [David Hotham brought this change] 1728 1729 Wrong function name throughout man page (#154) 1730 1731- ares_data.c: iterate through substructs when freeing 1732 1733 Previous code recursed into substructures, which makes it more likely 1734 that large/heavily-nested responses could use up lots of stack. 1735 1736- test: test ares_free_data on long chain of structs 1737 1738- [Felix Yan brought this change] 1739 1740 Fix a typo in inet_ntop.c (#151) 1741 1742Daniel Stenberg (29 Sep 2017) 1743- ares_gethostbyname.3: fix callback status values 1744 1745 - ARES_ENOTFOUND means the _name_ wasn't found 1746 1747 - ARES_ENODATA can be returned when a resolve fails 1748 1749 Reported-by: Jakub Hrozek 1750 Bug: https://c-ares.haxx.se/mail/c-ares-archive-2011-06/0012.shtml 1751 1752Brad House (28 Sep 2017) 1753- [John Schember brought this change] 1754 1755 Fix DNS server lookup breaking with Android O due to Android removing access to net.dns# system properties. (#148) 1756 1757 As of Android 8 (Oreo) access to net.dns# has been removed (https://developer.android.com/about/versions/oreo/android-8.0-changes.html). The reasoning given is that it, "improves privacy on the platform". Currently c-ares uses this to get the list of DNS servers. 1758 1759 Now the only way to access the DNS server list is by using the Connectivity Manager though Java. This adds the necessary JNI code to use the Connectivity Manager and pull the DNS server list. The old way using __system_property_get with net.dns# remains for compatibilty. 1760 1761 Using the Connectivity Manager requires the ACCESS_NETWORK_STATE permission to be set on the app. Existing applications most likely are not setting this and keeping the previous method as a fallback will at the very least ensure those apps don't break on older versions of Android. They will need to add this permission for Android 8 compatibility. 1762 1763 Included in the patch are two initalization functions which are required. The JVM must be registered as well as the Connectivity Manager itself. There is no way to get the Connectivity Manager except though Java. Either being passed down to C directly or by passing in an Android Context which can be used to get the Connectivity Manager. Examples are provided in the documentation. 1764 1765- [Konstantinos Sofokleous brought this change] 1766 1767 allow linking against the static msvc runtime library (#133) 1768 1769 allow linking against the static msvc runtime library 1770 1771- [Gergely Nagy brought this change] 1772 1773 Force using the ANSI versions of WinAPI functions (#142) 1774 1775 When compiling c-ares with a build system that defines UNICODE, 1776 bad versions of WinAPI functions are used causing failures or even 1777 crashes. When windows.h is included in MBCS mode (like in the default 1778 build system), the ..A versions are the same as using the one without 1779 any suffix. 1780 1781- [cmake] build fix on Solaris 1782 1783GitHub (11 Sep 2017) 1784- [Brad House brought this change] 1785 1786 Win32 exclude legacy ipv6 subnets (#144) 1787 1788 win32 ipv6: add infrastructure to exclude ipv6 subnets that are known to cause issues 1789 1790- [David Drysdale brought this change] 1791 1792 windows: only look for ancient compilers (#146) 1793 1794 Also drop the use of a versioned output directory; just use 1795 .\msvc 1796 1797- [David Drysdale brought this change] 1798 1799 ares_init_options.3: match up sock_state_cb args (#141) 1800 1801 Fixes #140 1802 1803Daniel Stenberg (25 Aug 2017) 1804- [Anna Henningsen brought this change] 1805 1806 gethostbyaddr: fail with `ECANCELLED` for `ares_cancel()` 1807 1808 When `ares_cancel()` was invoked, `ares_gethostbyaddr()` 1809 queries would fail with `ENOTFOUND` instead of `ECANCELLED`. 1810 1811 It seems appropriate to treat `ares_cancel()` like `ares_destroy()`, 1812 but I would appreciate review of the correctness of this change. 1813 1814 Ref: https://github.com/nodejs/node/issues/14814 1815 1816 Closes #138 1817 1818David Drysdale (18 Aug 2017) 1819- [David Hotham brought this change] 1820 1821 support most recent Visual Studio 2017 1822 1823Brad House (26 Jul 2017) 1824- Preserve original DNS server order on Windows for equal metrics. 1825 1826 qsort is not stable, in order to make it stable we need to record 1827 the original index and add it as a secondary sort value when the 1828 metrics are equal to prevent using DNS servers that may not work 1829 at all as reported by some users. 1830 1831David Drysdale (15 Jul 2017) 1832- [Anna Henningsen brought this change] 1833 1834 ares_parse_naptr_reply: make buffer length check more accurate 1835 1836 9478908a490a6bf009ba58d81de8c1d06d50a117 introduced a length check 1837 for records parsed by `ares_parse_naptr_reply()`. However, that 1838 function is designed to parse replies which also contain non-NAPTR 1839 records; for A records, the `rr_len > 7` check will fail as there 1840 are only 4 bytes of payload. 1841 In particular, parsing ANY replies for NAPTR records was broken 1842 by that patch. 1843 1844 Fix that by moving the check into the case in which it is already 1845 known that the record is a NAPTR record. 1846 1847- appveyor: run dnsdump as a sanity check 1848 1849- travis: run dnsdump as a sanity check 1850 1851- test: use ares_free_string() throughout 1852 1853 As pointed out by Gisle Vanem in #125. 1854 1855Daniel Stenberg (3 Jul 2017) 1856- RELEASE-PROCEDURE.md: how to release 1857 1858 Fixes #115 1859 Closes #116 1860 1861David Drysdale (2 Jul 2017) 1862- test: Build dnsdump on Windows too 1863 1864 Thanks to Gisle Vanem for showing the way: 1865 https://github.com/c-ares/c-ares/commit/b701af8a24cf9d173b1dbe5faedcea34642e92da#commitcomment-22830845 1866 1867Brad House (26 Jun 2017) 1868- [Christian Ammer brought this change] 1869 1870 fix statement like #define - ares ssize_t define had a trailing semicolon (#120) 1871 1872David Drysdale (21 Jun 2017) 1873- test: distribute the fuzzcheck.sh script 1874 1875 The TESTS target runs fuzzcheck.sh so make sure it is included 1876 in the distributed tarball. 1877 1878 (The test itself will be pointless when run on a distribution, because 1879 the fuzzing corpus directories are not shipped, but at least this 1880 means that `make -C test test` should work.) 1881 1882- test: run the name-parsing corpus check too 1883 1884Daniel Stenberg (21 Jun 2017) 1885- dist: don't build/ship PDF versions in release archives 1886 1887 ... experience says very few read them and they can still get build by 1888 those who want them.a 1889 1890- ares_version.h: bump version 1891 1892Version 1.13.0 (20 Jun 2017) 1893 1894Daniel Stenberg (20 Jun 2017) 1895- RELEASE-NOTES: 1.13.0 1896 1897- ares_set_socket_functions.3: added in 1.13.0 1898 1899David Drysdale (18 Jun 2017) 1900- ares_parse_naptr_reply: check sufficient data 1901 1902 Check that there is enough data for the required elements 1903 of an NAPTR record (2 int16, 3 bytes for string lengths) 1904 before processing a record. 1905 1906- test: Feed in short NAPTR 1907 1908- test: Add fuzz input with short NAPTR 1909 1910- test: add ares_parse_naptr_reply to fuzzer 1911 1912- [noiz brought this change] 1913 1914 Update ares.h to support compiling with QNX 1915 1916- [Dionna Glaze brought this change] 1917 1918 Simple changes to appease stricter compilers. 1919 1920 ares_process.c uses htonl, which needs <arpa/inet.h> included. 1921 ares_getnameinfo.c uses a dynamically selected format string for 1922 sprintf, which -Wformat-literal doesn't like. Usually one would use 1923 inttypes.h and a format string "%" PRIu32, but C99 is too new for some 1924 supported platforms. 1925 1926GitHub (16 Jun 2017) 1927- [Gregor Jasny brought this change] 1928 1929 CMake: Emulate interface library on import (#108) 1930 1931 Closes: #104 1932 Signed-off-by: Gregor Jasny <gjasny@googlemail.com> 1933 1934Brad House (6 Jun 2017) 1935- [ChristianAmmer brought this change] 1936 1937 Added support for Windows DNS Suffix Search List (#93) 1938 1939 This change solves issue #53. 1940 1941 Support for suffix search lists was already built in for Linux. The search list could be set via set_search. With this change the suffix search list from Windows is read from the registry and then set into the ares configuration via set_search. There are two sources for the search list: 1942 1943 The global DNS suffix search list. 1944 The primary and connection specific DNS suffixes if the global is not available. 1945 1946 Contributed by @ChristianAmmer 1947 1948Daniel Stenberg (25 May 2017) 1949- [Thomas Köckerbauer brought this change] 1950 1951 configure: do not heck for ar if specified manually 1952 1953 Closes #62 1954 1955David Drysdale (23 May 2017) 1956- ares_expand_name: limit number of indirections 1957 1958- test: fuzz input file that takes a while to process 1959 1960- test: copy data in fuzz regression driver 1961 1962 Oops. 1963 1964GitHub (23 May 2017) 1965- [David Drysdale brought this change] 1966 1967 Convert char from ISO-8859-1 to UTF-8 (#99) 1968 1969 Fixes #97 1970 1971- [Gregor Jasny brought this change] 1972 1973 travis: Use trusty for cmake builds (#109) 1974 1975 kubuntu-backports dropped the CMake package for Precise 1976 1977David Drysdale (2 May 2017) 1978- [David Hotham brought this change] 1979 1980 msvc_ver.inc support most recent Visual Studio 2017 (#101) 1981 1982- test: use io.h not unistd.h for Windows 1983 1984- test: try building fuzz binaries on Windows 1985 1986- test: stick to int in ares-fuzz.c 1987 1988 Using int rather than ares_ssize_t means this file 1989 needs no c-ares dependency - it's a general driver for 1990 any libFuzzer-style entrypoint. 1991 1992- test: force ARES_OPT_NOROTATE for no-rotate tests 1993 1994- test: check expected NOROTATE value 1995 1996- ares_create_query: use ares_free not naked free 1997 1998 Accidentally added in commit 65c71be1cbe5 1999 ("ares_create_query: avoid single-byte buffer overwrite") 2000 2001Brad House (17 Mar 2017) 2002- Need ares.h for ares_ssize_t 2003 2004- tests should not use ssize_t, use ares_ssize_t 2005 2006GitHub (16 Mar 2017) 2007- [Brad House brought this change] 2008 2009 Portability updates for legacy systems. (#92) 2010 2011 Socklen_t should not be used in code, instead ares_socklen_t should be used. 2012 Convert ssize_t to ares_ssize_t for portability since the public API now exposes this. 2013 2014David Drysdale (14 Mar 2017) 2015- [Michael Osei brought this change] 2016 2017 Update msvc_ver.inc (#91) 2018 2019 For Visual Studio 2017 builds 2020 2021Daniel Stenberg (13 Mar 2017) 2022- [Brad House brought this change] 2023 2024 Windows DNS server sorting (#81) 2025 2026 Original Patch From Brad Spencer: 2027 https://c-ares.haxx.se/mail/c-ares-archive-2016-04/0000.shtml 2028 2029 My modifications include: 2030 * Dynamically find GetBestRoute2 since it is a Windows Vista+ symbol, and will fall back to prior behavior when not available. 2031 * Prefer get_DNS_AdaptersAddresses as the modifications should alleviate the concerns which caused us to prefer get_DNS_NetworkParams 2032 * Update AppVeyor to use MinGW-w64 instead of the legacy MinGW 2033 * Fix compile error in test suite for Windows. 2034 2035 Original message from patch below: 2036 2037 From: Brad Spencer <bspencer@blackberry.com> 2038 Date: Fri, 29 Apr 2016 14:26:23 -0300 2039 2040 On Windows, the c-ares DNS resolver tries first to get a full list of 2041 DNS server addresses by enumerating the system's IPv4/v6 interfaces and 2042 then getting the per-interface DNS server lists from those interfaces 2043 and joining them together. The OS, at least in the way the c-ares 2044 prefers to query them (which also may be the only or best way in some 2045 environments), does not provide a unified list of DNS servers ordered 2046 according to "current network conditions". Currently, c-ares will then 2047 try to use them in whatever order the nested enumeration produces, which 2048 may result in DNS requests being sent to servers on one interface 2049 (hosting the current default route, for example) that are only intended 2050 to be used via another interface (intended to be used when the first 2051 interface is not available, for example). This, in turn, can lead to 2052 spurious failures and timeouts simply because of the server address 2053 order that resulted because of the enumeration process. 2054 2055 This patch makes the (safe?) assumption that there is no other better 2056 rule to chose which interface's DNS server list should be prioritized. 2057 After all, a DNS lookup isn't something "per network"; applications 2058 don't look up "these DNS names on this interface and those DNS names on 2059 that interface". There is a single resource pool of DNS servers and the 2060 application should presume that any server will give it the "right" 2061 answer. However, even if all DNS servers are assumed to give equally 2062 useful responses, it is reasonable to expect that some DNS servers will 2063 not accept requests on all interfaces. This patch avoids the problem by 2064 sorting the DNS server addresses using the Windows IPv4/v6 routing tables. 2065 2066 For example, a request to DNS server C on interface 2 that is actually 2067 sent over interface 1 (which may happen to have the default route) may 2068 be rejected by or not delivered to DNS server C. So, better to use DNS 2069 servers A and B associated with interface 1, at least as a first try. 2070 2071 By using the metric of the route to the DNS server itself as a proxy for 2072 priority of the DNS server in the list, this patch is able to adapt 2073 dynamically to changes in the interface list, the DNS server lists per 2074 interface, which interfaces are active, the routing table, and so on, 2075 while always picking a good "best" DNS server first. 2076 2077 In cases where any DNS server on any interface will do, this patch still 2078 seems useful because it will prioritize a lower-metric route's (and thus 2079 interface's) servers. 2080 2081David Drysdale (22 Feb 2017) 2082- [Sergii Pylypenko brought this change] 2083 2084 docs: fixed references to ares_set_local_ip4 and ares_set_local_ip6 2085 2086- [Calle Wilund brought this change] 2087 2088 ares test: fix win32 build errors with virtual socket function tests 2089 2090 The added api requires both some typedefs not previously imported 2091 into the test build + the test code did not fully deal with 2092 socket differences on windows. 2093 2094- [Calle Wilund brought this change] 2095 2096 ares_process: fix return type of socket_create function (win32 warning) 2097 2098Daniel Stenberg (31 Jan 2017) 2099- [Calle Wilund brought this change] 2100 2101 ares_set_socket_functions: Add man page 2102 2103 Providing some rudimentary documentation for the added functionality 2104 2105 Closes #72 2106 2107- [Calle Wilund brought this change] 2108 2109 ares-test: Add test helpers and cases for virtual socket IO 2110 2111 * Added test case macro to automatically run tests twice, once "normal", 2112 once with virtual IO. 2113 * Changed most "live" query tests to run in dual mode to verify 2114 at least simple socket IO via virtual functions 2115 * Added test case for settings/duping socket functions & callback data 2116 2117- [elcallio brought this change] 2118 2119 Implement using virtual socket IO functions when set 2120 2121 Uses virtual socket IO functions when set on a channel. 2122 Note that no socket options are set, nor is any binding 2123 done by the library in this case, since the client defining 2124 these is probably more suited to deal with this. 2125 2126- [elcallio brought this change] 2127 2128 Add virtual function set for socket IO 2129 2130 Defines a structure of basic create, close, read/write 2131 functions as virtual function calls, settable for individual 2132 c-ares channels. 2133 2134David Drysdale (30 Jan 2017) 2135- test: ignore aresfuzzname binary 2136 2137Gregor Jasny (14 Jan 2017) 2138- [Stephen Sorley brought this change] 2139 2140 Always use check_symbol_exists instead of check_function_exists. 2141 2142- Also add includes to TARGETS_INST_DEST 2143 2144- [Stephen Sorley brought this change] 2145 2146 Windows build fixes 2147 2148- CMake: Export targets 2149 2150- CMake: Use GNUInstallDirs for install location defaults 2151 2152David Drysdale (11 Jan 2017) 2153- Update Makefile.am for renamed INSTALL.md 2154 2155GitHub (11 Jan 2017) 2156- [David Drysdale brought this change] 2157 2158 docs: convert INSTALL to MarkDown & tweak (#83) 2159 2160- [Gregor Jasny brought this change] 2161 2162 Merge pull request #77 from stephen-sorley/cmake_modernize 2163 2164 Updated CMake minimum version to 2.8.12. 2165 2166Stephen Sorley (4 Jan 2017) 2167- Changed executables to depend directly on internal libcares target, instead of against 2168 the external-facing alias targets. 2169 2170- Updated Travis to pull CMake 2.8.12 from kubuntu-backports ppa. 2171 2172- Updated CMake minimum version to 2.8.12. 2173 2174 Changed the way usage requirements (include dirs, compile defs, dependent libraries) are specified, to match the recommended standard practice for modern CMake. This involves using target-specific functions (target_include_directories, target_compile_definitions, etc.), along with the PUBLIC, PRIVATE or INTERFACE modifiers. 2175 2176 Updated chain-building support to imitate new-style Find modules (import libs), instead of old-style Find modules (cache variables). 2177 2178David Drysdale (26 Dec 2016) 2179- [Chris Araman brought this change] 2180 2181 configure: clock_gettime workaround (#75) 2182 2183 Commits 7518c26, c41726b, and bc14ee7 brought this workaround to the CMake build system. This expands it to the autoconf build system. 2184 2185 Fixes #71 2186 2187- test: add fuzz entrypoint for ares_create_query() 2188 2189- test: Add gTest/gMock files to SOURCES 2190 2191 Built tarballs are not including all of the files needed 2192 to build the test suite because they are missing from the 2193 <target>_SOURCES variable in Makefile.am. 2194 2195- travis: Move build scripts under travis/ 2196 2197 Travis doesn't always propagate errors in inline multi-line 2198 scripts, so move them all to be explicit shell scripts, each 2199 with set -e. 2200 2201- travis: check distributed tarball builds 2202 2203Daniel Stenberg (25 Oct 2016) 2204- dist: ship msvc_ver.inc too 2205 2206 Reported-by: Bruce Stephens 2207 2208 Fixes #69 2209 2210- [Aaron Bieber brought this change] 2211 2212 fix build on OpenBSD 2213 2214- ares_version.h: bump, working on 1.12.1 now 2215 2216GitHub (18 Oct 2016) 2217- [Gregor Jasny brought this change] 2218 2219 Merge pull request #64 from bradh352/master 2220 2221 Add CMake build system support to C-Ares. 2222 2223Brad House (5 Oct 2016) 2224- suggested PROJECT_NAME change broke chain building as it needs the magic PROJECT_NAME set in the ADD_LIBRARY for matching. Fix to make both goals work 2225 2226- update MacOSX 10.12 detection 2227 2228- Expand XCode clock_gettime fix to include MacOS 10.12, not just iOS10 2229 2230David Drysdale (4 Oct 2016) 2231- Revert "travis: work around bug in PyCParser" 2232 2233 This reverts commit a24a10a348fc00b8cfd684d91894a1df14880ea9. 2234 2235- travis: work around bug in PyCParser 2236 2237 See https://github.com/pyca/cryptography/issues/3187 2238 2239Brad House (3 Oct 2016) 2240- PROJECT_SOURCE_DIR instead of CMAKE_CURRENT_SOURCE_DIR as per @gjasny 2241 2242- use a project name of c-ares as per @gjasny 2243 2244- Import curl conversion of Makefile.inc to cmake form dynamically as per bdoetsch@ameritech.net to make maintaining multiple build systems easier 2245 2246Daniel Stenberg (30 Sep 2016) 2247- dist: add ares_library_initialized.* to the tarball 2248 2249David Drysdale (30 Sep 2016) 2250- test: check ares_create_query with too-long name 2251 2252Daniel Stenberg (30 Sep 2016) 2253- man pages: minor formatting edits 2254 2255Brad House (29 Sep 2016) 2256- merge fc7917e from @daviddrysdale ... travis build updates for cmake 2257 2258- cleanups as per @gjasny ... Use naked IF statements and use NOT DEFINED 2259 2260Version 1.12.0 (29 Sep 2016) 2261 2262Daniel Stenberg (29 Sep 2016) 2263- RELEASE-NOTES: 1.12.0 2264 2265- [David Drysdale brought this change] 2266 2267 ares-test-misc: test ares_create_query with escaped trailing dot 2268 2269- ares_create_query: avoid single-byte buffer overwrite 2270 2271 ... when the name ends with an escaped dot. 2272 2273 CVE-2016-5180 2274 2275 Bug: https://c-ares.haxx.se/adv_20160929.html 2276 2277Brad House (29 Sep 2016) 2278- CMake: Unify library versioning with the libtool methodology to make keeping library versions in sync easier with the autotools build system 2279 2280Daniel Stenberg (29 Sep 2016) 2281- ares_library_initialized.3: added 2282 2283- make: bump CARES_VERSION_INFO for release 2284 2285David Drysdale (29 Sep 2016) 2286- man: update ares_init_options.3 2287 2288Daniel Stenberg (29 Sep 2016) 2289- ares_library_init.3: corrected the ares_library_init_mem proto 2290 2291Brad House (28 Sep 2016) 2292- XCode v8 introduced clock_gettime() for iOS v10. However, it is a weak symbol, which means when earlier iOS versions try to use clock_gettime() it results in a crash due to the missing symbol. Detect this condition and do not set HAVE_CLOCK_GETTIME_MONOTONIC. 2293 2294- Adds cmake build system support to C-Ares. 2295 2296 The patch does not modify any source files, it only adds 3 new files 2297 (CMakelists.txt, ares_build.h.cmake, ares_config.h.cmake) which form the 2298 build system. I've tried to go through as much of the autotools tests and 2299 extracted what I thought was appropriate, though many of the tests aren't 2300 as in-depth in CMake as they are for autotools ... it is unclear why some 2301 of them exist at all, I'm guessing for legacy systems that CMake probably 2302 doesn't support anyhow. 2303 2304 Building the library, and examples (adig, ahost, acountry) plus installation 2305 should work across a large number of tested platforms. The tests have not 2306 yet been integrated. 2307 2308Daniel Stenberg (27 Sep 2016) 2309- README.md: remove space from link 2310 2311- README: link to the correct c-ares badge! 2312 2313 Reported-by: David Hotham 2314 2315 Fixes #63 2316 2317- docs: minor formatting edits 2318 2319- ares_destroy.3: formatting polish 2320 2321- ares_init.3: split the init docs into two separate man pages 2322 2323- SECURITY: point to the vulnerabilities page now 2324 2325- RELEASE-NOTES: synced with daa7235b1a5 2326 2327- ares_create_query.3: edit language 2328 2329 Tried to make the man page more readable. 2330 2331David Drysdale (26 Sep 2016) 2332- test: fix gMock to work with gcc >= 6.x 2333 2334 Taken from: 2335 https://github.com/google/googletest/issues/705#issuecomment-235067917 2336 2337Daniel Stenberg (26 Sep 2016) 2338- [Brad House brought this change] 2339 2340 headers: remove checks for and defines of variable sizes 2341 2342 ... they're not really used and by avoiding them in the ares_build.h 2343 output we make the public header less dependent on data sizes. 2344 2345David Drysdale (24 Sep 2016) 2346- api: add ARES_OPT_NOROTATE optmask value 2347 2348 Fix up a couple of problems with configuring whether c-ares rotates 2349 between different name servers between requests. 2350 2351 Firstly, ares_save_options() returns (in *optmask) the value of 2352 (channel->optmask & ARES_OPT_ROTATE), which doesn't necessarily 2353 indicate whether the channel is or is not actually doing rotation. 2354 This can be confusing/incorrect if: 2355 - the channel was originally configured without ARES_OPT_ROTATE 2356 (so it appears that the channel is not rotating) 2357 - the /etc/resolv.conf file includes the 'rotate' option 2358 (so the channel is actually performing rotation). 2359 2360 Secondly, it is not possible to reliably configure a channel 2361 to not-rotate; leaving off ARES_OPT_ROTATE is not enough, since 2362 a 'rotate' option in /etc/resolv.conf will turn it on again. 2363 2364 Therefore: 2365 - add an ARES_OPT_NOROTATE optmask value to allow explicit 2366 configuration of no-rotate behaviour 2367 - in ares_save_options(), report the value of channel->rotate 2368 as exactly one of (optmask & ARES_OPT_ROTATE) or 2369 (optmask & ARES_OPT_NOROTATE). 2370 2371 In terms of back-compatibility: 2372 - existing apps that set ARES_OPT_ROTATE will continue to rotate, 2373 and to have ARES_OPT_ROTATE reported back from ares_save_options() 2374 - existing apps that don't set ARES_OPT_ROTATE will continue to 2375 use local config/defaults to decide whether to rotate, and will 2376 now get ARES_OPT_ROTATE or ARES_OPT_NOROTATE reported back from 2377 ares_save_options() rather than 0. 2378 2379- ares_init_options: only propagate init failures from options 2380 2381 Commit 46bb820be3a8 ("ares_init_options: don't lose init failure") 2382 changed init behaviour so that earlier errors in initialization 2383 weren't lost. In particular, if the user passes in specific 2384 options but they are not applied (e.g. because of an allocation 2385 failure), that failure needs to be reported back to the user; this 2386 also applies when duplicating a channel with ares_dup(). 2387 2388 However, other initialization failures can be ignored and 2389 overridden -- in particular, if init_by_resolv_conf() or 2390 init_by_environment() fail, then falling back to default values 2391 is OK. 2392 2393 So only preserve failures from the init_by_options() stage, not 2394 from all initialization stages. 2395 2396 Fixes issue 60. 2397 2398- test: Force reinstall of libtool on OSX 2399 2400 Travis build environment appears to have changed. 2401 2402- test: Add valgrind build variant 2403 2404- test: Add null pointer to gtest args 2405 2406 GoogleTest assumes that there is a null pointer in argv[argc], 2407 so make it look like that. Without this change, tests run with 2408 command-line arguments get memory errors under valgrind/ASAN. 2409 2410Daniel Stenberg (21 Aug 2016) 2411- AUTHOR: maybe gitgub isn't really an author =) 2412 2413- AUTHORS: added contributors from the git log 2414 2415- LICENSE.md: add a stand-alone license file 2416 2417 Just the MIT license used in the top the source files moved out to a 2418 stand-alone file for easier reference and discovery. 2419 2420- README: added "CII best practices" badge 2421 2422- SECURITY.md: suggested "security process" for the project 2423 2424David Drysdale (17 Aug 2016) 2425- test: Add Clang static analysis build to Travis 2426 2427 Run scan-build over the library source code, but skip the 2428 tests. Needs a later Clang install in Travis 2429 2430- test: more info on how to run fuzz testing 2431 2432- test: make fuzzer driver code C not C++ 2433 2434- test: fuzzer mode for AFL's persistent mode 2435 2436 When fuzzing with AFL, if the LLVM-based instrumentation is 2437 used (via the afl-clang-fast wrapper), then it is possible to 2438 have a single execution of the fuzzer program iterate multiple 2439 times over the fuzzing entrypoint (similar to libFuzzer's normal 2440 mode of execution) with different data. This is much (e.g. 10x) 2441 faster. 2442 2443 Add code to support this, by checking whether __AFL_LOOP is 2444 defined at compile-time. 2445 2446 Also, shift the code to effectively be C rather than C++. 2447 2448- test: simplify deps for fuzzer entrypoint 2449 2450 No need to depend on the rest of the test code (ares-test.h) for 2451 the fuzzer entrypoint; this makes the entrypoint slightly simpler 2452 to build with LLVM's libFuzzer. 2453 2454 Also shift the code to effectively be C rather than C++ 2455 2456- test: disable MinGW tests 2457 2458 The test binary built in the MinGW build is failing for some 2459 reason. It works for me when I build locally, so I'm guessing 2460 it's down to some sort of AppVeyor environment issue. 2461 2462 Disable for now. 2463 2464Daniel Stenberg (16 Aug 2016) 2465- read_tcp_data: remove superfluous NULL check 2466 2467 CID 56884 by Coverity. The pointer is already derefenced before this 2468 point so it can't be NULL here anyway. 2469 2470- web: http => https 2471 2472GitHub (20 Jul 2016) 2473- [David Drysdale brought this change] 2474 2475 Merge pull request #59 from fuze/master 2476 2477 Update msvc_ver.inc for VS2015 Update 3 2478 2479- [Chris Araman brought this change] 2480 2481 Update msvc_ver.inc 2482 2483 support Visual Studio 2015 Update 3 2484 2485David Drysdale (2 May 2016) 2486- Fix trailing comment for #endif 2487 2488Daniel Stenberg (30 Apr 2016) 2489- email: use Gisle's "new" address 2490 2491David Drysdale (18 Apr 2016) 2492- test: drop superfluous fuzz inputs 2493 2494 Where there are multiple fuzz input files that only differ in 2495 the first two bytes (the query ID), just keep the first such 2496 file. 2497 2498svante karlsson (15 Apr 2016) 2499- Update msvc_ver.inc 2500 2501 support Visual Studio 2015 Update 2 2502 2503David Drysdale (31 Mar 2016) 2504- test: Run fuzzcheck.sh in Travis build 2505 2506- test: add fuzzing check script to tests 2507 2508 Add a test script that runs the fuzzing command over the 2509 corpus of DNS packets. This doesn't actually do any fuzzing 2510 (it just runs them as inputs without generating any variations) 2511 but it does ensure that the fuzzing entrypoint is still working. 2512 2513- test: allow multiple files in aresfuzz command line 2514 2515 If no arguments are specified, use stdin as input. 2516 Otherwise treat each argument as a filename and feed 2517 its contents to the fuzz entrypoint. 2518 2519- test: Add corpus of DNS packets 2520 2521 For fuzz testing it is useful to start from a corpus of valid 2522 packets, so fill out the test/fuzzinput/ directory with a bunch 2523 of inputs. 2524 2525 These packets were generated by temporarily modifying the c-ares 2526 process_answer() function to save off any incoming response messages. 2527 2528- test: Add utility to show DNS packet from file 2529 2530- [nordsturm brought this change] 2531 2532 Fix nsort initialization 2533 2534 Author: Alexander Drachevskiy 2535 http://c-ares.haxx.se/mail/c-ares-archive-2014-07/0004.shtml 2536 http://c-ares.haxx.se/mail/c-ares-archive-2014-07/0014.shtml 2537 2538- test: Check setting nsort=0 option is respected 2539 2540- test: Update fuzzing function prototype 2541 2542 libFuzzer changed expected return type from void to int 2543 in LLVM 3.8. 2544 2545- Explicitly clear struct servent before use 2546 2547 On a build where MSAN has been manually set up (which involves 2548 using an MSAN-instrumented version of the standard C++ library, see 2549 https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo) 2550 there's a warning about use of uninitialized memory here. It 2551 might be a false positive, but the fix is trivial so include it. 2552 2553- test: for AF_UNSPEC, return CNAME only for AAAA, but valid A record 2554 2555 Also shuffle expected responses rsp6/rsp4 into the order they will occur. 2556 2557- [Chris Araman brought this change] 2558 2559 msvc_ver.inc: support Visual Studio 2015 Update 1 2560 2561- build: commonize MSVC version detection 2562 2563 Remove the need to copy/paste version number mapping between 2564 Makefile.msvc and test/Makefile.msvc. 2565 2566- test: Use different name in live test 2567 2568- test: Only pass unused args to GoogleTest 2569 2570- ahost.c: add cast to fix C++ compile 2571 2572 If ahost.c is force-compiled as C++ the missing cast from 2573 (void *) to (char **) is problematic. 2574 2575- ares_library_cleanup: reset ares_realloc too 2576 2577 Otherwise a subsequent use of the library might use a previous 2578 incarnation's realloc() implementation. 2579 2580Daniel Stenberg (9 Mar 2016) 2581- [Brad House brought this change] 2582 2583 configure: check if tests can get built before enabled 2584 2585 The current approach for disabling tests is not a good solution because 2586 it forces you to pass --disable-tests, rather than auto-detect if your 2587 system can support the tests in the first place. Many (most?) systems 2588 do not have C++11. This also causes issues when chain-building c-ares, 2589 the hosting system needs to be updated to support passing this 2590 additional flag if necessary, it doesn't seem reasonable to add this 2591 requirement which breaks compatibility. 2592 2593 This change auto-detects if the system can build the tests and 2594 automatically disable them if it cannot. If you pass --enable-tests to 2595 configure and the system cannot build them either due to lack of system 2596 support, or because cross-compilation is being used, it will throw an 2597 appropriate error since the user indicated they really did want the 2598 tests. 2599 2600David Drysdale (3 Mar 2016) 2601- [Viktor Szakats brought this change] 2602 2603 Makefile.m32: add support for CROSSPREFIX 2604 2605- [Viktor Szakats brought this change] 2606 2607 Makefile.m32: add support for extra flags 2608 2609 Allow specification of CARES_{LD,C}FLAG_EXTRAS envvars 2610 for mingw 2611 2612- test: Build with MinGW on AppVeyor 2613 2614- test: avoid in6addr_* constants 2615 2616 These aren't available on MinGW, so use explicit addresses instead. 2617 2618- test: add missing #includes for dns-proto.cc 2619 2620- [Gregor Jasny brought this change] 2621 2622 Fix man page typos detected by Lintian 2623 2624Daniel Stenberg (19 Feb 2016) 2625- configure: acknowledge --disable-tests 2626 2627 Fixes #44 2628 2629- AUTHORS: added contributors from the 1.11.0 release 2630 2631- bump: start working on the next version 2632 2633Version 1.11.0 (19 Feb 2016) 2634 2635Daniel Stenberg (19 Feb 2016) 2636- RELEASE-NOTES: final edits for 1.11.0 2637 2638David Drysdale (15 Feb 2016) 2639- ares_dup.3: remove mention of nonexistent function 2640 2641 ares_dup_options() doesn't exist, so don't document it. 2642 2643- test: skip repeated build steps 2644 2645 Top-level buildconf/configure now triggers for the 2646 test/ subdir too, so don't need to do explicitly. 2647 2648- test: namespaces unavailable when cross-compiling 2649 2650Daniel Stenberg (13 Feb 2016) 2651- configure: only run configure in test when NOT cross-compiling 2652 2653 ... as the tests won't run cross-compiled anyway 2654 2655David Drysdale (13 Feb 2016) 2656- test: prefer ON_CALL to EXPECT_CALL to reduce flakes 2657 2658 For UDP tests, there's a chance of a retry. EXPECT_CALL only 2659 expects a single request to arrive at the server; ON_CALL allows 2660 for a UDP retry and repeats the same answer. 2661 2662 Note that ON_CALL and EXPECT_CALL can't be mixed in the same 2663 test, and that tests that have a varied sequence of responses 2664 for the same repeated request still have to use EXPECT_CALL. 2665 2666Daniel Stenberg (13 Feb 2016) 2667- configure: run configure in 'test' too 2668 2669 Having the test dir completely stand-alone causes too many issues for 2670 users and devs. It still needs to be built specifically. 2671 2672- configure: build silently by default 2673 2674- buildconf: run test/buildconf too if present 2675 2676- test/configure: build silently by default 2677 2678- [Gregor Jasny brought this change] 2679 2680 dist: Distribute README.md 2681 2682 Closes #42 2683 2684Version 1.11.0 (11 Feb 2016) 2685 2686Daniel Stenberg (11 Feb 2016) 2687- Makefile.am: distribute the test dir too 2688 2689- RELEASE-NOTES: synced with 385582bd14b68a 2690 2691- [Nicolas \"Pixel\" Noble brought this change] 2692 2693 ares_win32_init: make LoadLibrary work when using UNICODE too 2694 2695 Closes #17 2696 2697David Drysdale (11 Feb 2016) 2698- Use "resolve" as synonym of "dns" in nsswitch.conf 2699 2700 Modern Linux systems may have libnss_resolve from systemd as the 2701 resolver, which is then configured in /etc/nsswitch.conf with 2702 the "resolve" keyword rather than "dns". 2703 2704 Fixes #33 2705 2706- ares_set_socket_callback: make manpage match code 2707 2708 The code in ares_process.c that invokes the socket creation/connection 2709 callback only checks for rc < 0, not for standard ares error codes. 2710 2711- Merge pull request #36 from AGWA-forks/master 2712 2713 Add ares_set_socket_configure_callback() 2714 2715- test: Update init tests to match behaviour 2716 2717 Unreadable config files are now treated the same way 2718 as absent config files. 2719 2720- [Fedor Indutny brought this change] 2721 2722 Ignore `fopen` errors to use default values 2723 2724 After 46bb820be3a83520e70e6c5f0c5133253fcd69cd `init_by_resolv_conf` 2725 errors are no longer swallowed in `ares_init_options`. This has exposed 2726 a previously unknown bug in `lookups` initialization code. 2727 2728 If there is no lookup configuration in `resolv.conf`, 2729 `init_by_resolv_conf` will attempt to read it from other files available 2730 on the system. However, some of these files may have restricted 2731 permissions (like `600`), which will lead to `EACCESS` errno, which in 2732 turn is handled like a fatal error by `init_by_resolv_conf`. 2733 2734 However, it sounds illogical that this error should be handled as a 2735 fatal. There is a `init_by_defaults` call that overrides `lookups` with 2736 default value, and certainly possible absence of lookup information is 2737 the reason why this function exists in a first place! 2738 2739 I suggest handling any `fopen` errors as non-fatal ones, allowing to 2740 pick up the `lookups` value from different config files, or to pick up 2741 default value. 2742 2743Andrew Ayer (9 Feb 2016) 2744- Document callback type in man page for ares_set_socket_callback 2745 2746- Add ares_set_socket_configure_callback() 2747 2748 This function sets a callback that is invoked after the socket is 2749 created, but before the connection is established. This is an ideal 2750 time to customize various socket options. 2751 2752David Drysdale (9 Feb 2016) 2753- test: ares_set_socket_callback failure behaviour 2754 2755- test: Check ares_parse_txt_reply_ext() entrypoint 2756 2757- [Fedor Indutny brought this change] 2758 2759 txt: introduce `ares_parse_txt_reply_ext` 2760 2761 Introduce `ares_txt_ext` structure with an extra `record_start` 2762 field, which indicates a start of a new TXT record, thus allowing to 2763 differentiate the chunks in the same record, from a chunks in a 2764 different record. 2765 2766 Introduce a new API method: `ares_parse_txt_reply_ext` that works with 2767 this kind of struct. 2768 2769- doc: Update missed repo references 2770 2771- doc: Update docs on contributing 2772 2773- test: Run command line tools in Travis 2774 2775 Do a quick execution of each of the command line tools 2776 in the continuous integration build, so that any (say) 2777 sanitizer failures show up. 2778 2779- acountry: drop inert test 2780 2781 If ver_1 is true, then z0 and z1 must both be 'z', and so 2782 (z0 != 'z' && z1 != 'z') can never be true. 2783 2784 CID 56879, pointed out by Coverity. 2785 2786- doc: update badge locations to master repo 2787 2788- test: Enable maintainer mode + debug in Travis 2789 2790- test: Add an iOS build target 2791 2792- test: Ignore SIGPIPE in tests 2793 2794- test: More initialization tests 2795 2796- test: Improve containerized test mechanism 2797 2798 Aim is to ensure that code coverage information can escape the 2799 container. To do this: 2800 - Enter a new mount namespace too, so that we can... 2801 - Bind mount the expected source directory into the container 2802 - Share memory with the sub-process so coverage information is 2803 shared too. 2804 2805- test: Make contained tests easier to write 2806 2807- test: Add framework for containerized testing 2808 2809 On Linux we can potentially use user and UTS namespaces to run a test 2810 in a pseudo-container with: 2811 - arbitrary filesystem (e.g. /etc/resolv.conf, /etc/nsswitch.conf, /etc/hosts) 2812 - arbitrary hostname/domainname. 2813 2814 Include a first pass at the framework code to allow this, along with a 2815 first test case that uses the container. 2816 2817- test: Use a longer timeout for less flakiness 2818 2819 Having occasional test failures from timeout before multiple 2820 queries can complete, so up the default timeout for the test 2821 from 100ms to 1500ms. 2822 2823- test: Make failure tests more robust 2824 2825 Different platforms will do different numbers of allocations 2826 in the processing of a given API call; just check that the 2827 return code is either success or ENOMEM, and free off any 2828 returned state in the former case. 2829 2830 Also cope with ECONNREFUSED as well as ENOTFOUND. 2831 2832- test: Get test code building under Windows 2833 2834 - Initial nmake file based off library nmake file 2835 - Cast socket call arguments to (char *) 2836 - Use wrapper sclose() that maps to closesocket() or close() 2837 - Build a config.h indicating presence of headers 2838 - Conditionally include netdb.h 2839 - Remove unnecessary include of sys/socket.h 2840 - Force longer bitmask for allocation failure tracking 2841 - Call WSAStartup() / WSACleanup() in main() 2842 - Set TCP_NODELAY for mock server 2843 - Turn on tests in AppVeyor build 2844 2845- test: Disable tests that manipulate env on Windows 2846 2847- test: Move file lists into Makefile.inc 2848 2849 In preparation for a Win32 build of the test suite. 2850 2851- test: Add a simple multi-server test 2852 2853 Check rotate option does something 2854 2855- test: Allow for multiple mock servers 2856 2857 - Update the MockServer to allow separate specification of 2858 UDP and TCP ports 2859 - Have an array of mock servers listening on consecutive 2860 sets of ports. 2861 - Rename Process(fd) to ProcessFD(fd) to avoid confusion. 2862 - Initialize channel by using the new ares_set_servers_ports() 2863 entrypoint, so multiple ports on the same loopback address 2864 can be used. 2865 2866- test: Update test for set/get_servers variants 2867 2868 Ports are significant in the _ports_ variant functions, so update test to cope. 2869 2870- test: Make GetNameServers() utility function port-aware 2871 2872 Also make it generally available. 2873 2874- test: more testing, including of internal static functions 2875 2876- test: more tests, especially fallback processing 2877 2878 - Make mock server listen on UDP + TCP in parallel. 2879 - Test UDP->TCP fallback on truncation 2880 - Test EDNS->no-EDNS fallback 2881 - Test some environment init options 2882 - Test nonsense reply 2883 2884 test: short response 2885 2886- test: more tests, particularly of initialization 2887 2888- test: Run mock tests over both TCP and UDP 2889 2890 With the exception of a few tests that make use of the timed 2891 retry aspect of UDP. 2892 2893- test: Run mock tests over both IPv4 and IPv6 2894 2895- test: Add more tests for edge cases 2896 2897- test: more nooks and crannies of pton functions 2898 2899- test: More tests for PTR parsing 2900 2901- test: Use of HOSTALIAS environment variable 2902 2903- test: Add RAII utility classes for testing 2904 2905 - TempFile holds specific contents 2906 - EnvValue sets an environment variable 2907 2908- test: More search domain scenarios 2909 2910- test: Remove duplicate flags from Makefile.am 2911 2912- test: Make test code leak-free 2913 2914- test: More tests 2915 2916 - test use of sortlist 2917 - test gethostbyname(AF_UNSPEC) 2918 2919- test: Test ares_gethostbyname_file() 2920 2921- test: Add more tests of ares_getnameinfo() 2922 2923- test: Tweak tests, add alloc failure test 2924 2925- test: Test init with options 2926 2927- test: More tests 2928 2929 - ares_inet_net_pton() variants 2930 - ares_getsock() variants 2931 2932- test: Expose ProcessWork() function 2933 2934- test: More parsing tests 2935 2936 Including: 2937 - Split each parse function test set out into separate files. 2938 - Add an allocation failure test for each parsing function. 2939 - Add error check test for each parsing function. 2940 2941- test: Add various additional tests 2942 2943- test: More tests 2944 2945 Include tests of internal functions, based on the value of the 2946 CARES_SYMBOL_HIDING macro; need to configure the library with 2947 --disable-symbol-hiding to enable these tests. 2948 2949- test: Allow command line override of mock server port 2950 2951- test: Add README.md documentation 2952 2953- test: Temporarily avoid latest Python requests package 2954 2955 Currently get error from Travis on this install step, and downgrading one 2956 version appears to fix the problem. 2957 2958 "Could not find any downloads that satisfy the requirement pyOpenSSL>=0.13 2959 (from requests[security])" 2960 2961- test: Add AppVeyor config file for Windows build 2962 2963- test: Add configuration for a Travis build 2964 2965 Cover Linux & OSX on the container infrastructure, but install 2966 a later G++ to satisfy the tests' need for C++11. 2967 2968 Use a build matrix to include a variety of build variants: 2969 - ASAN 2970 - UBSAN 2971 - LSAN 2972 - Coverage via coveralls.io 2973 2974 test: invoke ASAN and coverage in Travis build 2975 2976 Also shift to use explicit build matrix 2977 2978 test: Use coveralls.io for coverage tracking 2979 2980 test: Add a build with UBSAN 2981 2982 Also expand and re-order the setting of environment variables 2983 for easier modification. 2984 2985 test: Add LSAN build to Travis config 2986 2987- test: Add initial unit tests for c-ares library 2988 2989 The tests are written in C++11, using the GoogleTest and GoogleMock 2990 frameworks. They have their own independent autoconf setup, so that 2991 users of the library need not have a C++ compiler just to get c-ares 2992 working (however, the test/configure.ac file does assume the use of 2993 a shared top-level m4/ directory). However, this autoconf setup has 2994 only been tested on Linux and OSX so far. 2995 2996 Run with "./arestest", or "./arestest -v" to see extra debug info. 2997 The GoogleTest options for running specific tests are also 2998 available (e.g. "./arestest --gtest_filter=*Live*"). 2999 3000 The tests are nowhere near complete yet (currently hitting around 3001 60% coverage as reported by gcov), but they do include examples 3002 of a few different styles of testing: 3003 3004 - There are live tests (ares-test-live.cc), which assume that the 3005 current machine has a valid DNS setup and connection to the 3006 internet; these tests issue queries for real domains but don't 3007 particularly check what gets returned. The tests will fail on 3008 an offline machine. 3009 3010 - There a few mock tests (ares-test-mock.cc) that set up a fake DNS 3011 server and inject its port into the c-ares library configuration. 3012 These tests allow specific response messages to be crafted and 3013 injected, and so are likely to be used for many more tests in 3014 future. 3015 3016 - To make this generation/injection easier, the dns-proto.h file 3017 includes C++ helper classes for building DNS packets. 3018 3019 - Other library entrypoints that don't require network activity 3020 (e.g. ares_parse_*_reply) are tested directly. 3021 3022 - There are few tests of library-internal functions that are not 3023 normally visible to API users (in ares-test-internal.cc). 3024 3025 - A couple of the tests use a helper method of the test fixture to 3026 inject memory allocation failures, using the earlier change to the 3027 library to allow override of malloc/realloc/free. 3028 3029 - There is also an entrypoint to allow Clang's libfuzzer to drive 3030 the packet parsing code in ares_parse_*_reply, together with a 3031 standalone wrapper for it (./aresfuzz) to allow use of afl-fuzz 3032 for further fuzz testing. 3033 3034- test: Add local copy of GoogleMock/GoogleTest 1.7.0 3035 3036 Don't check in gtest/m4 files, as they are unused and interfere 3037 with the top-level configure process. 3038 3039- doc: Show build badges in README.md 3040 3041 Note that these URLs will need to be updated if/when the test branch 3042 gets pulled into the master repo/branch. 3043 3044- doc: Convert README to README.md 3045 3046 Gives better display on GitHub 3047 3048- doc: Update in preparation for next release 3049 3050 Assume 1.11.0 is next (as there are various API additions). 3051 Also add myself to AUTHORS. 3052 3053- build: Allow header compilation by Windows C++ compiler 3054 3055- build: Expose whether symbol hiding is on 3056 3057 Adding the CARES_SYMBOL_HIDING definition allows the test suite to 3058 detect whether internal symbols are available or not. 3059 3060- build: Add autoconf macros for C++11 code using pthreads 3061 3062 Pull in testing macros from the GNU autoconf archive to allow 3063 configure scripts to test for and setup use of a C++11 compiler 3064 (AX_CXX_COMPILE_STDCXX_11) and the pthreads library (AX_PTHREAD). 3065 3066 Note that these macros are not used by the main library autoconf, 3067 just by the tests (which share the same m4/ directory). 3068 3069- build: Add a code coverage option 3070 3071 Configure with: 3072 ./configure --enable-code-coverage 3073 Show coverage output with: 3074 make code-coverage-capture 3075 3076 Built on m4/ax_code_coverage.m4 from the GNU autoconf archive 3077 to provide the macros to check for presence of gcov + lcov; 3078 upstream macro modified to: 3079 - Remove use of $(AM_DEFAULT_VERBOSITY) , as earlier versions of 3080 autoconf (such as the one used by default on Travis) do not have this. 3081 - Rather than automatically defining CODE_COVERAGE_RULES to be a set 3082 of makefile rules that use ifeq/endif (which is GNU make-specific), 3083 instead only define CODE_COVERAGE_RULES if coverages is turned on, 3084 and in that case don't use conditionals in the makefile. 3085 3086- api: Add entrypoints to allow use of per-server ports 3087 3088 Add user-visible entrypoints ares_{get,set}_servers_ports(3), which 3089 take struct ares_addr_port_node rather than struct ares_addr_node. 3090 This structure includes a UDP and TCP port number; if this is set 3091 to zero, the channel-wide port values are used as before. 3092 3093 Similarly, add a new ares_set_servers_ports_csv(3) entrypoint, which 3094 is analogous to ares_set_servers(3) except it doesn't ignore any 3095 specified port information; instead, any per-server specified port 3096 is used as both the UDP and TCP port for that server. 3097 3098 The internal struct ares_addr is extended to hold the UDP/TCP ports, 3099 stored in network order, with the convention that a value of zero 3100 indicates that the channel-wide UDP/TCP port should be used. 3101 3102 For the internal implementation of ares_dup(3), shift to use the 3103 _ports() version of the get/set functions, so port information is 3104 transferred correctly to the new channel. 3105 3106 Update manpages, and add missing ares_set_servers_csv to the lists 3107 while we're at it 3108 3109- api: Add ares_set_sortlist(3) entrypoint 3110 3111 Allow explicit configuration of the channel's sortlist, by 3112 specifying a string in the same format as the equivalent 3113 /etc/resolv.conf option. 3114 3115 This allows library users to perform the same configuration 3116 that is available via /etc/resolv.conf, but without needing 3117 to change that file. 3118 3119- api: Allow injection of user-specified malloc/free functions 3120 3121 Add a new ares_library_init_mem() initialization function for the 3122 library which allows the library user to specify their own malloc, 3123 realloc & free equivalents for use library-wide. 3124 3125 Store these function pointers in library-wide global variables, 3126 defaulting to libc's malloc(), realloc() and free(). 3127 3128 Change all calls to malloc, realloc and free to use the function pointer 3129 instead. Also ensure that ares_strdup() is always available 3130 (even if the local environment includes strdup(3)), and change the 3131 library code to always use it. 3132 3133 Convert calls to calloc() to use ares_malloc() + memset 3134 3135- api: Add option to expose some internal functions 3136 3137 Purely for testing, add --enable-expose-statics option to configure 3138 which converts some static internal functions to be externally visible. 3139 3140- api: Expose the ares_library_initialized() function 3141 3142- ahost: Allow repeated -s <domain> options 3143 3144 This also removes a potential leak where later -s options would 3145 replace earlier ones without freeing the relevant string. 3146 3147- Mark unhittable lines 3148 3149 Add comments for the benefit of the lcov tool, marking 3150 lines that cannot be hit. Typically these are fall-back 3151 protection arms that are already covered by earlier checks, 3152 and so it's not worth taking out the unhittable code (in case 3153 someone changes the code between the two places in future). 3154 3155- ares_set_servers_csv.3: make return type match code 3156 3157- bitncmp: update comment to match code behaviour 3158 3159- ares_striendstr: fix so non-NULL return can happen 3160 3161 This looks to have been broken since it was first introduced in 2005 in 3162 commit aba0b775ea30 ("Added ares_getnameinfo which mimics the 3163 getnameinfo API") 3164 3165- config_sortlist: free any existing sortlist on (re)alloc failure 3166 3167 If we get an allocation failure on 2nd or later entry in the sortlist, the 3168 code would return ENOMEM but still leave the initial entries allocated. 3169 Ensure that *sortlist is set to NULL whenever ENOMEM is returned. 3170 3171- ares_dup: clear new channel on failure 3172 3173 If the attempt to transfer IPv6 servers from the old to the new channel 3174 fails, the previous code would still return a channel to the user even though 3175 an error return code was generated. This makes it likely that users would 3176 leak the channel, so explicitly clear the channel in this case. 3177 3178- ares_init_options: don't lose init failure 3179 3180 If (say) init_by_options() fails, the subsequent call to 3181 init_by_defaults() was overwriting the return code with 3182 success. Still call init_by_defaults() regardless, but track 3183 its return value separately 3184 3185- ares_gethostbyname: don't leak valid-but-empty hostent 3186 3187 If an AF_UNSPEC query gets a valid response to its AAAA query, 3188 but which has no IPv6 addresses in it, then the code chains on to 3189 a A record query. However, the hostent from the AAAA response 3190 was being leaked along the way (because it gets replaced before 3191 the follow-on end_hquery() invocation). 3192 3193- ares_parse_txt_reply: propagate errors from per-substring loop 3194 3195 If we get an allocation failure when processing a particular substring in a 3196 TXT record, that failure is silently lost; fix that by propagating errors from 3197 the inner loop to the outer loop. 3198 3199- process_answer: fix things up correctly when removing EDNS option 3200 3201 When a server rejects an EDNS-equipped request, we retry without 3202 the EDNS option. However, in TCP mode, the 2-byte length prefix was 3203 being calculated wrong -- it was built from the answer length rather than 3204 the length of the original request. 3205 3206 Also, it is theoretically possible that the call to realloc() might change 3207 the data pointed to; to allow for this, qbuf also needs updating. 3208 3209 (Both these fixes were actually included in a patchset sent on the mailing 3210 list in Oct 2012, but were included with other functional changes that 3211 didn't get merged: 3212 http://c-ares.haxx.se/mail/c-ares-archive-2012-10/0004.shtml) 3213 3214- ares__read_line: clear buf pointer on realloc failure 3215 3216- ares_expand_name: check for valid bits in label length 3217 3218 The top two bits of the label length indicate whether this is a 3219 label length (00) or an index to a name elsewhere in the message 3220 (11). RFC1035 4.1.4 says that the other possible values for the 3221 top two bits (01, 10) are reserved for future use. 3222 3223Daniel Stenberg (23 Jan 2016) 3224- [Gregor Jasny brought this change] 3225 3226 Fix typos detected by lintian 3227 3228 Closes #32 3229 3230- [Gregor Jasny brought this change] 3231 3232 Distribute all man pages 3233 3234- README.cares: s/I/Daniel 3235 3236 ... and add a pointer to an existing version of the original area 1.1.1 3237 package.a 3238 3239- read_tcp_data: don't try to use NULL pointer after malloc failure 3240 3241 CID 56884, pointed out by Coverity. We really should make this function 3242 return an error code so that a malloc() failure can return back a major 3243 failure. 3244 3245- configure_socket: explicitly ignore return code 3246 3247 CID 56889 in Coverity pointed out the return code from setsocknonblock() 3248 is ignored, and this added typecast to (void) makes it explicit. 3249 3250- ahost: check the select() return code 3251 3252 Fixes CID 137189, pointed out by Coverity 3253 3254David Drysdale (18 Jan 2016) 3255- Fix buildconf on platforms using glibtoolize 3256 3257 Commit c49a87eea538 changed buildconf to only check for 3258 libtoolize, but missed a line 3259 3260- Don't exit loop early leaving uninitialized entries 3261 3262 Update for commit affc63cba875d. 3263 3264 The original patch from Gregor Jasny did not have the break 3265 statement; I incorrectly added it to prevent continuing the loop. 3266 However, the later entries in the array would then be left 3267 uninitialized, causing problems for later cleanup. 3268 3269 So fix to match Gregor's original patch, with apologies. 3270 3271Daniel Stenberg (18 Jan 2016) 3272- buildconf: remove check for libtool, it only requires libtoolize 3273 3274David Drysdale (17 Jan 2016) 3275- [Gregor Jasny brought this change] 3276 3277 Use libresolv to initialize cares on iPhone targets 3278 3279 On iPhone targets like iOS, watchOS or tvOS the file 3280 /etc/resolv.conf cannot be used to configure cares. 3281 3282 Instead the resolver library is queried for configuration 3283 values. 3284 3285 CC: Yury Kirpichev <ykirpichev@yandex-team.ru> 3286 3287Daniel Stenberg (17 Jan 2016) 3288- README: updated to new repo URL 3289 3290David Drysdale (14 Jan 2016) 3291- [Lei Shi brought this change] 3292 3293 Fixing slow DNS lookup issue 3294 3295 This patch is fixing the dns lookup issue due to dummy dns information 3296 of a disconnected adapter(in my case is a bluetooth adapter). I changed 3297 the dns lookup policy to try GetNetworkParams first because the 3298 GetNetworkParams provides the most reliable dns information (lots of 3299 checks were done by system). I also filter out inoperable adapter in 3300 DNS_AdaptersAddresses in case GetNetworkParams fail. 3301 3302- Merge pull request #30 from p-push/vs-2015 3303 3304 Support Visual Studio 2015 3305 3306Oleg Pudeyev (3 Jan 2016) 3307- [Gisle Vanem brought this change] 3308 3309 Support Visual Studio 2015 3310 3311David Drysdale (11 Nov 2015) 3312- [Andrew Andkjar brought this change] 3313 3314 added another version case to Makefile.msvc 3315 3316 nmake version 11.00.61030.0 resolves to CC_VERS_NUM = 110 3317 3318- Merge pull request #26 from bitbouncer/vs-2013 3319 3320 added define for visual studio 2013 3321 3322svante karlsson (25 Jun 2015) 3323- added define for visual studio 2013 3324 3325Jakub Hrozek (6 Nov 2014) 3326- ares__read_line: free buf on realloc failure 3327 3328- Destroy options if ares_save_options fails 3329 3330 It's possible that, if ares_save_options failed, the opts structure 3331 would contain some allocated memory. Calling ares_destroy_options in 3332 this case is safe, because ares_save_options zeroes out the memory 3333 initially. 3334 3335- [David Drysdale brought this change] 3336 3337 Continue loop if space for hostname not large enough 3338 3339 When attempting to build a search domain from the local hostname 3340 (used as a fallback when no other methods have given a search 3341 domain), the code doubles the buffer size on each loop iteration. 3342 3343 However, the loop previously had a WHILE_FALSE terminator so the continue 3344 statement exited the loop rather than going round again. 3345 3346Daniel Stenberg (30 Oct 2014) 3347- ares_getnameinfo.3: there is no ares_getaddrinfo 3348 3349David Drysdale (30 Sep 2014) 3350- [Gregor Jasny brought this change] 3351 3352 Prevent tmpbuf from overrunning 3353 3354 Fix Coverity error CID 56886. 3355 3356 Signed-off-by: Gregor Jasny <gjasny@googlemail.com> 3357 3358- [Gregor Jasny brought this change] 3359 3360 Re-start loop if select fails 3361 3362 Fix Coverity error CID 56882 3363 3364 Signed-off-by: Gregor Jasny <gjasny@googlemail.com> 3365 3366- [Gregor Jasny brought this change] 3367 3368 Free temporary variable in error path 3369 3370 Fix Coverity CID 56890 3371 3372 Signed-off-by: Gregor Jasny <gjasny@googlemail.com> 3373 3374- [Gregor Jasny brought this change] 3375 3376 Fix integer shift overflow if both tcp_socket and udp_socket are set 3377 3378 The problem occurs if at the start of the loop the sockindex is at the 3379 last valid ARES_GETSOCK_MAXNUM position. If then both udp_socket and 3380 tcp_socket are valid, sockindex gets incremented for UDP first and 3381 points one entry behind the array for the tcp block. 3382 So the fix is to check after every increment of sockindex if it is still 3383 valid. 3384 3385 Fix Coverity error CID 56878 3386 3387 Signed-off-by: Gregor Jasny <gjasny@googlemail.com> 3388 3389- [Gregor Jasny brought this change] 3390 3391 Null check before dereference 3392 3393 Fix Coverity error CID 56880 3394 3395 Signed-off-by: Gregor Jasny <gjasny@googlemail.com> 3396 3397Jakub Hrozek (28 Jul 2014) 3398- [Gisle Vanem brought this change] 3399 3400 Comment in ares_ipv6.h 3401 3402David Drysdale (25 Jul 2014) 3403- CONTRIBUTING: add file to indicate mailing list is preferred 3404 3405- Add -t u option to ahost 3406 3407 Add an option to allow specification of the AF_UNSPEC 3408 address family. 3409 3410Jakub Hrozek (24 Jul 2014) 3411- host_callback: Fall back to AF_INET on searching with AF_UNSPEC 3412 3413 Previously, when an ares_gethostbyname() searched with AF_UNSPEC and the 3414 first AF_INET6 call only returned CNAMEs, the host_callback never 3415 retried AF_INET. 3416 3417 This patch makes sure than on ARES_SUCCESS, the result of AF_INET6 is 3418 taken as authoritative only if the result contains some addresses. 3419 3420- [David Drysdale brought this change] 3421 3422 Move memset call below platform-specific declarations 3423 3424 A GitHub commenter [1] says that my recent change to ahost.c has 3425 problems compiling on Windows + C89 platforms. 3426 3427 [1] https://github.com/bagder/c-ares/commit/ee22246507c9#commitcomment-6587616 3428 3429- [David Drysdale brought this change] 3430 3431 Update ahost man page to describe -s option. 3432 3433 Commit ee22246507c9 added the -s <domain> option to the 3434 ahost command, but neglected to update the man page to 3435 describe it. 3436 3437 Also fix typo in description of -t option. 3438 3439- ares_parse_soa_reply: Do not leak rr_name on allocation failure 3440 3441 If ares_malloc_data failed, already allocated rr_name would go out of 3442 scope. 3443 3444- [David Drysdale brought this change] 3445 3446 Don't override explicitly specified search domains 3447 3448 Only set search domains from /etc/resolv.conf if there isn't a value 3449 already present in the channel. 3450 3451- [David Drysdale brought this change] 3452 3453 Allow specification of search domain in ahost 3454 3455 Add the "-s domain" command line option to override the search 3456 domains. 3457 3458Daniel Stenberg (12 May 2014) 3459- Revert "ares_parse_aaaa_reply: fix leak when reply contains 1 alias and no address" 3460 3461 This reverts commit 440110b303fdbfadb3ad53d30eeb98cc45d70451. 3462 3463- [Frederic Germain brought this change] 3464 3465 ares_parse_aaaa_reply: fix leak when reply contains 1 alias and no address 3466 3467- [Doug Kwan brought this change] 3468 3469 ares_build.h: fix building on 64-bit powerpc 3470 3471 There are two issues. 3472 3473 1. gcc actually does not use __ppc__ and __ppc64__ but __PPC__ and 3474 __PPC64__. The tests of __ILP32__ and __LP64__ are sufficient for gcc. 3475 3476 2. clang defines __GNU__ and defines both __ppc64__ and __ppc__ when 3477 targeting ppc64. This makes CARES_SIZEOF_LONG to be 4 on a ppc64 system 3478 when building with clang. 3479 3480 My patch is two change the order of the checks so that we check the 3481 64-bit case first. 3482 3483- refresh: updated now with automake 1.14 3484 3485- [David Drysdale brought this change] 3486 3487 single_domain: Invalid memory access for empty string input 3488 3489 We noticed a small buglet in ares_search() when it gets an empty string 3490 as input -- the single_domain() utility function in ares_search.c 3491 accesses invalid memory (before the start of the string). 3492 3493Guenter Knauf (31 Aug 2013) 3494- Fixed warning 'type specifier missing'. 3495 3496Daniel Stenberg (30 Aug 2013) 3497- [Tor Arntsen brought this change] 3498 3499 ares_rules.h: CARES_SIZEOF_LONG doesn't exist anymore, don't test for it 3500 3501 It was removed in f19387dd72432 3502 3503- nowarn: use <limits.h> instead of configure for size of long 3504 3505 This makes the header file much more multi-arch friendly and can be used 3506 as-is with both 32 bit and 64 bit builds. 3507 3508- timeoffset: made static and private 3509 3510 ares__timeoffset() was only used once within this single source file 3511 3512- timeadd: make static 3513 3514 ares__timeadd() was only ever used from within the same source 3515 3516Yang Tse (18 Jul 2013) 3517- xc-am-iface.m4: comments refinement 3518 3519- configure: fix 'subdir-objects' distclean related issue 3520 3521 See XC_AMEND_DISTCLEAN comments for details. 3522 3523- configure: automake 1.14 compatibility tweak (use XC_AUTOMAKE) 3524 3525- xc-am-iface.m4: provide XC_AUTOMAKE macro 3526 3527Daniel Stenberg (12 May 2013) 3528- gitignore: ignore all ares_*pdf but also CHANGES.dist 3529 3530- bump: start working towards 1.10.1 3531 3532Version 1.10.0 (12 May 2013) 3533 3534Daniel Stenberg (12 May 2013) 3535- RELEASE-NOTES: two more bug fixes 3536 3537- [Keith Shaw brought this change] 3538 3539 ares_set_servers_csv: fixed IPv6 address parsing 3540 3541 Fixed bug that caused the last part of an IPv6 address to be parsed as 3542 the port number when the last part is all numeric. 3543 3544- nroff: fix two syntax mistakes 3545 3546 ares_parse_a_reply and ares_parse_aaaa_reply both had two \fB instead of 3547 \fP 3548 3549 Reported-by: Alexander Klauer 3550 Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-03/0010.shtml 3551 3552- [Alex Loukissas brought this change] 3553 3554 build: fix build on msvc11 3555 3556- Makefile.am: increment -version-info for 1.10.0 release 3557 3558- README: remove unnecessary comment 3559 3560- ares_version.h: copyright end range year is now 2013 3561 3562- RELEASE-NOTES: synced with fb0737f3a0a1c37 3563 3564- [Paul Saab brought this change] 3565 3566 ares_parse_aaaa_reply: Plug memory leak 3567 3568 This change is similar to ares_parse_a_reply.c in commit 3569 bffd67f16a8f42fe6dbf79ab2e39d92eea05c8a6 3570 3571- [Patrick Valsecchi brought this change] 3572 3573 ares_parse_txt_reply: return a ares_txt_reply node for each sub-string 3574 3575 Previously, the function would wrongly return all substrings merged into 3576 one. 3577 3578- [Alexander Klauer brought this change] 3579 3580 library init: documentation update 3581 3582 This commit updates the documentation of ares_library_init() and 3583 ares_library_cleanup() with regard to the newly introduced reference 3584 counting of initializations and deinitializations. 3585 3586- [Alexander Klauer brought this change] 3587 3588 library init: be recursive 3589 3590 Previously, a single call to ares_library_cleanup() would deinitialise 3591 the c-ares library, regardless of how many times ares_library_init() was 3592 called. This behaviour may cause problems in programs linking two or 3593 more libraries which, in turn, use c-ares. The present commit fixes this 3594 problem, deinitializing the library only after a number of calls to 3595 ares_library_cleanup() matching the number of calls to 3596 ares_library_init(). 3597 3598- [Patrick Valsecchi brought this change] 3599 3600 protocol parsing: check input data stricter 3601 3602 ... so that bad length fields aren't blindly accepted 3603 3604 Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-04/0016.shtml 3605 3606Guenter Knauf (11 Apr 2013) 3607- Create ares_build.h when buidling from Git. 3608 3609- Added -DCARES_STATICLIB to CFLAGS. 3610 3611 Currently this static makefile does only support building the 3612 static library libcares.a. 3613 3614Daniel Stenberg (8 Apr 2013) 3615- [Alexander Klauer brought this change] 3616 3617 .gitignore: ignore patch files 3618 3619 This commit adds a line to .gitignore to the effect that patch files 3620 generated by 'git format-patch' are excluded from the repository. 3621 3622- [Alexander Klauer brought this change] 3623 3624 ares_destroy() documentation: no new requests 3625 3626 Clarify that no new requests may be added to a resolver channel that is 3627 currently being destroyed. 3628 3629- [Alexander Klauer brought this change] 3630 3631 Documentation: properly document ARES_ECANCELLED 3632 3633 This commit clarifies the behaviour of ares_cancel() with respect to 3634 callbacks and adds missing documentation of ARES_ECANCELLED to the man 3635 pages of the affected functions. 3636 3637- [Alexander Klauer brought this change] 3638 3639 ares_cancel(): cancel requests safely 3640 3641 An invocation of ares_cancel() walks through the request list, calling 3642 the callbacks of all pending requests on a channel. Previously, if such 3643 a callback added a new request to the channel, the request list might 3644 not end up empty, causing an abort by assertion failure. The present 3645 commit ensures that precisely all requests present upon entry of 3646 ares_cancel() are cancelled, and that adding new requests through 3647 callbacks is safe. 3648 3649Yang Tse (10 Mar 2013) 3650- ares.h: stricter CARES_EXTERN linkage decorations logic 3651 3652 No API change involved. 3653 3654- ares_build.h.dist: enhance non-configure GCC ABI detection logic 3655 3656 GCC specific adjustments: 3657 3658 - check __ILP32__ before 32 and 64bit processor architectures in 3659 order to detect ILP32 programming model on 64 bit processors 3660 which, of course, also support LP64 programming model, when using 3661 gcc 4.7 or newer. 3662 3663 - keep 32bit processor architecture checks in order to support gcc 3664 versions older than 4.7 which don't define __ILP32__ 3665 3666 - check __LP64__ for gcc 3.3 and newer, while keeping 64bit processor 3667 architecture checks for older versions which don't define __LP64__ 3668 3669Daniel Stenberg (9 Mar 2013) 3670- ares.h: there is no ares_free_soa function 3671 3672Yang Tse (9 Mar 2013) 3673- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility 3674 3675- ares_inet_ntop.3: s/socklen_t/ares_socklen_t 3676 3677- configure: use XC_LIBTOOL for portability across libtool versions 3678 3679- xc-lt-iface.m4: provide XC_LIBTOOL macro 3680 3681- Makefile.am: use AM_CPPFLAGS instead of INCLUDES 3682 3683- inet_ntop.c: s/socklen_t/ares_socklen_t 3684 3685- inet_ntop.c: s/socklen_t/ares_socklen_t for portability 3686 3687Daniel Stenberg (19 Feb 2013) 3688- ares.h: s/socklen_t/ares_socklen_t for portability 3689 3690- ares_inet_ntop.3: 4th argument is socklen_t! 3691 3692- spell inet correctly! 3693 3694- ares_inet_pton/ntop: cleanup 3695 3696 Make sure that the symbols are always exported and present in c-ares. 3697 3698 Make the headers prefixed with 'ares'. 3699 3700 Removed the inet_ntop.h version as it no longer features any content. 3701 3702- ares_inet_ntop/ares_inet_pton: added man pages 3703 3704Yang Tse (15 Feb 2013) 3705- [Gisle Vanem brought this change] 3706 3707 curl_setup_once.h: definition of HAVE_CLOSE_S defines sclose() to close_s() 3708 3709- [Gisle Vanem brought this change] 3710 3711 config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32 3712 3713- [Gisle Vanem brought this change] 3714 3715 config-dos.h: define strerror() to strerror_s_() for High-C 3716 3717Daniel Stenberg (13 Feb 2013) 3718- ares_get_datatype: removed unused function 3719 3720 it was also wrongly named as internal functions require two underscores 3721 3722- ares__bitncmp: use two underscores for private functions 3723 3724 It used a single one previously making it look like a public one 3725 3726- ares__generate_new_id: moved to ares_query.c 3727 3728 ... and ares__rc4 is turned into a local static function. 3729 3730- ares__swap_lists: make private and static 3731 3732 ... since there's only one user, make it static within ares_process.c 3733 3734Yang Tse (13 Feb 2013) 3735- Makefile.msvc: add four VS version strings 3736 3737Daniel Stenberg (13 Feb 2013) 3738- ares_expand_name.3: clarify how to free the data 3739 3740Yang Tse (30 Jan 2013) 3741- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 2 3742 3743 - Fix a pair of single quotes to double quotes. 3744 3745 URL: http://curl.haxx.se/mail/lib-2013-01/0355.html 3746 Reported by: Tor Arntsen 3747 3748- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 3749 3750 - Take into account that 'wc' may return leading spaces and/or tabs. 3751 3752 - Set initial IFS to space, tab and newline. 3753 3754- zz40-xc-ovr.m4: fix 'wc' detection 3755 3756 - Take into account that 'wc' may return leading spaces. 3757 3758 - Set internationalization behavior variables. 3759 3760 Tor Arntsen analyzed and reported the issue. 3761 3762 URL: http://curl.haxx.se/mail/lib-2013-01/0351.html 3763 3764- zz40-xc-ovr.m4: check another three basic utilities 3765 3766- zz40-xc-ovr.m4: 1.0 interface stabilization 3767 3768 - Stabilization results in 4 public interface m4 macros: 3769 XC_CONFIGURE_PREAMBLE 3770 XC_CONFIGURE_PREAMBLE_VER_MAJOR 3771 XC_CONFIGURE_PREAMBLE_VER_MINOR 3772 XC_CHECK_PATH_SEPARATOR 3773 - Avoid one level of internal indirection 3774 - Update comments 3775 - Drop XC_OVR_ZZ40 macro 3776 3777- zz40-xc-ovr.m4: emit witness message in configure BODY 3778 3779 This avoids witness message in output when running configure --help, 3780 while sending the message to config.log for other configure runs. 3781 3782- zz40-xc-ovr.m4: truly do version conditional overriding 3783 3784 - version conditional overriding 3785 - catch unexpanded XC macros 3786 - fix double words in comments 3787 3788- zz40-xc-ovr.m4: fix variable assignment of subshell output bashism 3789 3790 Tor Arntsen analyzed and reported the issue. 3791 3792 URL: http://curl.haxx.se/mail/lib-2013-01/0306.html 3793 3794- zz40-xc-ovr.m4: reinstate strict AC_REQUIRE macro dependencies 3795 3796- zz40-xc-ovr.m4: avoid double single-quote usage 3797 3798- zz40-xc-ovr.m4: parentheses balancing of 'case' statements 3799 3800 m4 quadrigraph shell comment technique allows proper autoconf 3801 parentheses balancing in shell 'case' statements. The presence 3802 of unbalanced parentheses may otherwise trigger expansion bugs. 3803 3804- zz40-xc-ovr.m4: internals overhauling 3805 3806 - Update comments 3807 - Execute commands in subshells 3808 - Faster path separator check 3809 - Fix missing 'test' command 3810 - Rename private macros 3811 - Minimize AC_REQUIRE usage 3812 3813- zz40-xc-ovr.m4: redirect errors and warnings to stderr 3814 3815- configure: use XC_CONFIGURE_PREAMBLE early checks 3816 3817 Some basic checks we make were placed early enough in generated 3818 configure script when using autoconf 2.5X versions. Newer autoconf 3819 versions expand these checks much further into the configure script, 3820 rendering them useless. Using XC_CONFIGURE_PREAMBLE fixes placement 3821 of early intended checks across all our autoconf supported versions. 3822 3823- zz40-xc-ovr.m4: provide XC_CONFIGURE_PREAMBLE macro 3824 3825- configure: autotools compatibility fixes - step I 3826 3827 Fix proper macro expansion order across autotools versions for 3828 C compiler and preprocessor program checks. 3829 3830- configure: fix automake 1.13 compatibility 3831 3832 Tested with: 3833 3834 buildconf: autoconf version 2.69 3835 buildconf: autom4te version 2.69 3836 buildconf: autoheader version 2.69 3837 buildconf: automake version 1.13.1 3838 buildconf: aclocal version 1.13.1 3839 buildconf: libtool version 2.4 3840 buildconf: GNU m4 version 1.4.16 3841 3842- ares_private.h: use again memdebug.h instead of curl_memdebug.h 3843 3844- configure.ac: replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS 3845 3846 automake 1.13 errors if AM_CONFIG_HEADER is used in configure script. 3847 3848- cares-override.m4: provide AC_CONFIG_MACRO_DIR definition conditionally 3849 3850 Provide a 'traceable' AC_CONFIG_MACRO_DIR definition only when using 3851 an autoconf version that does not provide it, instead of what we were 3852 doing up to now of providing and overriding AC_CONFIG_MACRO_DIR for 3853 all autoconf versions. 3854 3855- ares_private.h: use curl_memdebug.h instead of memdebug.h 3856 3857- vc6cares.dsp: add ares_create_query.c and ares_parse_soa_reply.c 3858 3859- cares-functions.m4: improve gethostname arg 2 data type check 3860 3861- setup_once.h: HP-UX specific 'bool', 'false' and 'true' definitions. 3862 3863 Also reverts commit bceb40095a 3864 3865- configure: check if compiler halts on function prototype mismatch 3866 3867- cares-functions.m4: add gethostname arg 2 data type check and definition 3868 3869- cares-functions.m4: update thread-safeness detection of getaddrinfo() 3870 3871 Take in account that POSIX standard Issue 7 drops h_errno support. Now, we also 3872 consider getaddrinfo() to be thread-safe when (_POSIX_C_SOURCE >= 200809L) or 3873 (_XOPEN_SOURCE >= 700) independently of whether h_errno exists or not. 3874 3875 Take in account that h_errno might be a modifiable lvalue not defined as 3876 a C preprocessor macro. 3877 3878- setup_once.h: HP-UX <sys/socket.h> issue workaround 3879 3880 Issue: When building a 32bit target with large file support HP-UX 3881 <sys/socket.h> header file may simultaneously provide two different 3882 sets of declarations for sendfile and sendpath functions, one with 3883 static and another with external linkage. Given that we do not use 3884 mentioned functions we really don't care which linkage is the 3885 appropriate one, but on the other hand, the double declaration emmits 3886 warnings when using the HP-UX compiler and errors when using modern 3887 gcc versions resulting in fatal compilation errors. 3888 3889 Mentioned issue is now fixed as long as we don't use sendfile nor 3890 sendpath functions. 3891 3892- setup_once.h: refactor inclusion of <unistd.h> and <sys/socket.h> 3893 3894 Inclusion of these two header files now done in setup_once.h 3895 3896- Header inclusion clean-up 3897 3898 Remove header inclusions already done in setup_once.h 3899 3900- setup_once.h: HP-UX specific TRUE and FALSE definitions 3901 3902 Some HP-UX system headers require TRUE defined to 1 and FALSE to 0. 3903 3904- ares_timeout.c: fix compiler warning 3905 3906- ares_create_query.c: IRIX compilation fix 3907 3908- c-ares/nameser.h: add some T_* defines for ns_t_* values 3909 3910Daniel Stenberg (7 Nov 2012) 3911- Revert "ares_parse_aaaa_reply: fix memory leak" 3912 3913 This reverts commit 50f25d8a4b2d16f4c5e0ef620238688b7a315c7a. 3914 3915- ares_parse_aaaa_reply: fix memory leak 3916 3917 an allocated buffer was not freed in the successful case. 3918 3919- [Gisle Vanem brought this change] 3920 3921 adig: perror() doesn't work for socket errors on windows 3922 3923 ... so print the SOCKERRNO instead 3924 3925- get_DNS_AdaptersAddresses: fix IPv6 parsing 3926 3927 Use of the wrong define made the function not parse IPv6 addresses 3928 properly. 3929 3930 Bug: http://c-ares.haxx.se/mail/c-ares-archive-2012-06/0028.shtml 3931 Reported by: Saúl Ibarra Corretgé 3932 3933- version: bumped to 1.10.0 3934 3935 Due to the newly added function: ares_create_query() 3936 3937- AUTHORS: synced with 83093ac450 3938 3939 Added 21 authors since this document was last updated 3940 3941- ares_create_query.3: mention when this is added 3942 3943- [hpopescu@ixiacom.com brought this change] 3944 3945 Added new feature (rfc2671) 3946 3947- code police: fix indents, < 80 columns, reflowed comments 3948 3949Guenter Knauf (11 Jul 2012) 3950- Cleaned up version awk script. 3951 3952Daniel Stenberg (30 Jun 2012) 3953- [Gisle Vanem brought this change] 3954 3955 read_udp_packets: bail out loop on bad sockets 3956 3957 I can see that recvfrom() in ares_process.c many times is called with 3958 'udp_socket' == ARES_SOCKET_BAD. The code takes care not to call 3959 recv/recvfrom with ARES_SOCKET_BAD in the outer-loop. So should the 3960 inner-loop. 3961 3962Yang Tse (29 Jun 2012) 3963- cares-compilers.m4: remove -Wstrict-aliasing=3 from clang 3964 3965 Currently it is unknown if there is any version of clang that 3966 actually supports -Wstrict-aliasing. What is known is that there 3967 are several that don't support it. 3968 3969- cares-compilers.m4: -Wstrict-aliasing=3 for warning enabled gcc and clang builds 3970 3971Daniel Stenberg (18 Jun 2012) 3972- version: work towards 1.9.2 (at least) 3973 3974Version 1.9.1 (18 Jun 2012) 3975 3976Daniel Stenberg (18 Jun 2012) 3977- RELEASE-NOTES: 1.9.1 coming up 3978 3979Version 1.9.0 (16 Jun 2012) 3980 3981Daniel Stenberg (16 Jun 2012) 3982- ares_version.h: next version is 1.9.0 3983 3984- [Marko Kreen brought this change] 3985 3986 ares_data.h: ARES_DATATYPE_SOA_REPLY is added in 1.9.0 3987 3988- RELEASE-NOTES: synced with 979bf951d 3989 3990 Next release deemed to become 1.9.0 due to the new function 3991 3992- [Marko Kreen brought this change] 3993 3994 SOA parser added 3995 3996 I need to do SOA queries, so here is a parser for them. 3997 3998 - ares_soa_reply: new struct 3999 - ares_malloc_data/ares_free_soa: ARES_DATATYPE_SOA_REPLY 4000 - ares_parse_soa_reply: actual function 4001 4002Yang Tse (14 Jun 2012) 4003- Kill compiler warning 4004 4005- Fix libcares.pc generation for static MingW* cross builds 4006 4007Daniel Stenberg (21 May 2012) 4008- [Nick Alcock brought this change] 4009 4010 Fix UDP and TCP port byte order in saved options. 4011 4012 The UDP and TCP port are stored in network byte order in the 4013 ares_channeldata, but are passed in to ares_init_options() in host byte 4014 order. Thus we must return them from ares_save_options() in host byte 4015 order too, or a duplicated channel will convert them again, leading to a 4016 nonfunctional channel and a mysterious connection refused error from 4017 ares_gethostbyname(). This breaks ares_dup(), thus the curl easy API 4018 when c-ares is used by curl, and thus all the curl easy API's users. 4019 4020Yang Tse (28 Apr 2012) 4021- version: start working on 1.8.1-DEV 4022 4023Version 1.8.0 (27 Apr 2012) 4024 4025Daniel Stenberg (27 Apr 2012) 4026- RELEASE-NOTES: call next 1.8 instead 4027 4028 Since we added a function, let's use a stricter bumping scheme 4029 4030Yang Tse (25 Apr 2012) 4031- INSTALL: some adjustments 4032 4033Daniel Stenberg (25 Apr 2012) 4034- GIT-INFO: mention buildconf 4035 4036Yang Tse (25 Apr 2012) 4037- INSTALL: remove more sections that don't apply to c-ares 4038 4039- ares_timeout.c: fix compiler warning 4040 4041Daniel Stenberg (25 Apr 2012) 4042- [Ben Noordhuis brought this change] 4043 4044 Makefile.m32: fix mingw32 build 4045 4046 * add . to include path so ares_build.h is picked up 4047 * make ar configurable to ease cross-compiling 4048 4049- RELEASE-NOTES: added what's happened since 1.7.5 4050 4051Guenter Knauf (22 Apr 2012) 4052- Updated copyright year. 4053 4054Yang Tse (21 Apr 2012) 4055- ares_init.c: Further refactoring of Windows system's DNS fetching code 4056 4057Guenter Knauf (20 Apr 2012) 4058- Android: small changes to dns property part. 4059 4060 Prefix prop vars; kill var; use DNS_PROP_NAME_PREFIX macro. 4061 4062- Handle CNAME-only in ares_parse_aaaa_reply(). 4063 4064 posted to the c-ares list by Peter Griess <pg@std.in>. 4065 4066- Add support for multiple DNS servers on Android. 4067 4068 Before, c-ares always used the first DNS server on Android, causing 4069 network problems if this DNS server was not available. 4070 4071 Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> 4072 4073- Added INSTALL so it gets into tarballs. 4074 4075- Added some more ifdefs to silent compiler warnings. 4076 4077Yang Tse (17 Apr 2012) 4078- INSTALL: remove a non c-ares section 4079 4080- cares-compilers.m4: -Wno-pedantic-ms-format for Windows gcc 4.5 builds 4081 4082 When building a Windows target with gcc 4.5 or newer and strict compiler 4083 warnings enabled use -Wno-pedantic-ms-format in addition to other flags. 4084 4085- setup_once.h: tighten requirements for stdbool.h header inclusion 4086 4087 Include stdbool.h only when it is available and configure is capable of 4088 detecting a proper 'bool' data type when the header is included. 4089 4090- configure: NATIVE_WINDOWS no longer defined in config file 4091 4092- cares-compilers.m4: double underscore decoration for visibility attribute 4093 4094- build adjustments: CARES_SYMBOL_HIDING no longer defined in config files 4095 4096 configure script now provides conditional definitions for Makefile.am 4097 that result in CARES_SYMBOL_HIDING being defined by resulting makefiles 4098 when appropriate. 4099 4100- configure: Windows cross-compilation fixes 4101 4102 CARES_BUILDING_LIBRARY and CARES_STATICLIB no longer defined in ares_config.h, 4103 configure will generate appropriate conditionals so that mentioned symbols 4104 get defined and used in Makefile derived from Makefile.am at compilation time. 4105 4106Guenter Knauf (17 Apr 2012) 4107- Added INSTALL file adapted from libcurl. 4108 4109 Not yet ready, and needs further edits. 4110 4111Yang Tse (16 Apr 2012) 4112- ares_init.c: get_iphlpapi_dns_info() refactoring 4113 4114Guenter Knauf (16 Apr 2012) 4115- Kill some more compiler warnings. 4116 4117- Kill compiler warning about unused var. 4118 4119- Fixed my last commit: wrong preprocessor directive. 4120 4121- Check for __ANDROID__ in addition to ANDROID macro. 4122 4123- Check for __ANDROID__ in addition to ANDROID macro. 4124 4125 Posted to c-ares list by Wayne. 4126 4127- Fix for Android to disable useless arpa/nameser.h. 4128 4129- Fix for Android to include sys/select.h for fd_set. 4130 4131Yang Tse (17 Mar 2012) 4132- ares_data.c: some NAPTR related fixes 4133 4134Daniel Stenberg (16 Mar 2012) 4135- port numbers: convert them to network order! 4136 4137 When the config options ARES_OPT_UDP_PORT or ARES_OPT_TCP_PORT are used, 4138 make sure to convert them to network byte order! 4139 4140 Bug: http://c-ares.haxx.se/mail/c-ares-archive-2012-02/0004.shtml 4141 4142- white space cleanup 4143 4144 - Keep code within 80 columns 4145 4146 - Removed funny spaces after open paren and before closing paren 4147 4148- [Poul Thomas Lomholt brought this change] 4149 4150 get_iphlpapi_dns_info: fix buffer overrun 4151 4152 I experienced a buffer overrun exception in c-ares on Windows and 4153 tracked it down to be an error in the calculation of the 'left' variable 4154 in get_iphlpapi_dns_info(). 4155 4156 I changed the variable type of 'left' to a _signed_ type because of the 4157 subtraction arithmetic; not sure if a long is the best choice 4158 4159- Merge pull request #7 from saghul/naptr 4160 4161 Added support for parsing NAPTR records 4162 4163saghul (23 Feb 2012) 4164- Added support for parsing NAPTR records 4165 4166Yang Tse (19 Jan 2012) 4167- ares_init.c: fix compiler warning on winsock builds 4168 4169- configure: libtool 1.5 tweaks 4170 4171Daniel Stenberg (19 Dec 2011) 4172- ares_timeout.3: fix the NAME section 4173 4174 It was clearly a copy n' paste error 4175 4176Yang Tse (27 Sep 2011) 4177- [Albert Chin brought this change] 4178 4179 configure - m4: make CURL_CHECK_DEF ignore leading whitespace on symbol def 4180 4181 When using Sun C compiler the preprocessor somehow inserts an extra space 4182 in front of replaced symbol, breaking CURL_CHECK_DEF macro. To workaround 4183 this, macro CURL_CHECK_DEF now ignores all leading whitespace in front of 4184 symbol substitution result. 4185 4186- ares_init.c: fix segfault triggered in ares_init_options() upon previous 4187 failure of init_by_defaults() and incomplete cleanup there. 4188 4189- ares_process.c: fix compiler warning 4190 4191- fix MSVC compiler warning 'conditional expression is constant' 4192 4193- setup_once.h cleanup and sync 4194 4195- [Denis Bilenko brought this change] 4196 4197 ares_getnameinfo: fix random results with c-ares 1.7.5 4198 4199 In ares_getnameinfo memcpy did not copy enough bytes, causing 4200 it to return arbitrary memory contents as a result. 4201 4202- warnings: fix another 'conversion may lose significant bits' compiler warning 4203 4204- ares_dns.h: adjust DNS__16BIT and DNS__32BIT macro definitions 4205 4206 Fixing compiler warnings existing definitions triggered on these. 4207 4208- ares_destroy.c: fix segfault in ares_destroy_options() 4209 4210Daniel Stenberg (21 Aug 2011) 4211- ares_parse_srv_reply: silence compiler warnings 4212 4213 ... by adding ugly typecasts. 4214 4215- CHANGES: generate from script 4216 4217 The CHANGES file is now generated automatically with 'git2changes.pl', 4218 invoked by the maketgz script which is used to build release archives. 4219 4220 The former human edited CHANGES file was renamed to CHANGES.0 in git. 4221 4222Yang Tse (21 Aug 2011) 4223- Makefile.netware: SIZEOF_SHORT definition 4224 4225- warnings: fix some 'conversion may lose significant bits' compiler warnings 4226 4227- configure: fix symbol hiding usability check 4228 4229 A more thorough test is done now in order to determine visibility attribute 4230 usability, given that some compilers don't support visibility attribute on 4231 all configurations. 4232 4233Daniel Stenberg (16 Aug 2011) 4234- 1.7.6: start working... 4235 4236Version 1.7.5 (16 Aug 2011) 4237 4238Daniel Stenberg (16 Aug 2011) 4239- CHANGES: synced for 1.7.5 release 4240 4241- RELEASE-NOTES: synced with bb4096effef7f000 4242 4243Jakub Hrozek (15 Aug 2011) 4244- Only fall back to AF_INET searches when looking for AF_UNSPEC addresses 4245 4246Yang Tse (10 Aug 2011) 4247- [Gisle Vanem brought this change] 4248 4249 ares_iphlpapi.h: Watcom C fix 4250 4251 Added "!defined(_WS2DEF_)" since Watcom doesn't have 4252 a per type guard for the typedefs 'CSADDR_INFO' (that MingW has) or 4253 'SOCKET_ADDRESS' (that MSVC has). But we can use the header-guard for 4254 <ws2def.h> instead. 4255 4256- [Gisle Vanem brought this change] 4257 4258 Makefile.Watcom: 4259 * The 'NTDDI_VERSION' needs to be raised to 0x05010000 4260 in order for SOCKADDR_STORAGE etc. to be typedefed. 4261 * Replaced '-dUSE_WATT32' with '-dWATT32'. 4262 * Added $(DEMOS) to the 'all' target and removed the 'demos' 4263 target to be consistent with e.g. Makefile.msvc etc. 4264 * 'ENABLE_IPV6' is no longer used. Hence removed the '%use_ipv6' construct. 4265 * object-file order seems to be important (Watcom v.19). Hence 4266 'ares_getopt.obj' must be put after the .obj that references getopt(). 4267 4268- cares-compilers.m4: CARES_CONVERT_INCLUDE_TO_ISYSTEM adjustments 4269 4270 Add CARES_CHECK_COMPILER as a requirement. 4271 4272 Ensure macro does nothing unless GNU_C or CLANG compiler is used. 4273 4274 This should allow usage of this macro in unforeseen placements. 4275 4276- config-win32.h: comments adjustments - followup 4277 4278- config-win32.h: comments adjustments 4279 4280Daniel Stenberg (5 Aug 2011) 4281- [Tom Hughes brought this change] 4282 4283 ares_parse_a_reply: fix memleak 4284 4285Yang Tse (29 Jul 2011) 4286- cares-functions.m4 serial # bump 4287 4288- Revert "configure: additional flag checks for fcntl() and socket()" 4289 4290 This reverts commit 5f2a3b0e48f26d24cb1fefea0dccb92d417dcbf7. 4291 4292- configure: additional flag checks for fcntl() and socket() 4293 4294- xc-translit.m4 fix quoting 4295 4296- configure: avoid direct usage of AS_TR_* macros 4297 4298- xc-translit.m4 provides transliteration macros with well defined behavior. 4299 4300Jakub Hrozek (15 Jun 2011) 4301- Revert "Only fall back to AF_INET searches when looking for AF_UNSPEC addresses" 4302 4303 This reverts commit b5823d65706af687c0e5110af8f0cfdcd068997d. 4304 4305 This patch was not reviewed properly before pushing 4306 4307- Revert "Do not use sized constants in public headers" 4308 4309 This reverts commit 22c01e96f7b2ae9923e1baa50bfe3c0d22297a7d. 4310 4311 This is a Red Hat specific patch that does not belong into upstream 4312 4313- Use correct sizeof in ares_getnameinfo() 4314 4315- Do not leak rr_name on failures inside ares_parse_ptr_reply 4316 4317- Do not leak rr_name on failures inside ares_parse_a_reply 4318 4319- Do not leak rr_name on failures inside ares_parse_aaaa_reply 4320 4321- Do not leak rr_name on failures inside ares_parse_ns_reply 4322 4323- Fix incorrect sizeof() in ares_save_options 4324 4325- Fix incorrect allocation in ares_parse_ptr_reply() 4326 4327- Only fall back to AF_INET searches when looking for AF_UNSPEC addresses 4328 4329- Do not use sized constants in public headers 4330 4331Daniel Stenberg (13 Jun 2011) 4332- [Jakub Hrozek brought this change] 4333 4334 ares_free_hostent(NULL) should be a noop 4335 4336Yang Tse (8 Jun 2011) 4337- configure: fix recvfrom 5th arg type qualifier detection (followup) 4338 4339- configure: fix recvfrom 5th arg type qualifier detection 4340 4341 Additionally remove whitespace from EOL 4342 4343Daniel Stenberg (4 Jun 2011) 4344- strlen: use size_t to receive the return 4345 4346Yang Tse (4 Jun 2011) 4347- xlc: avoid preprocessor definition usage when linking 4348 4349- ares_nowarn: icc 9.1 workaround 4350 4351- ares_nowarn: header inclusion fix 4352 4353- ares_init: make ares_private.h last included header again 4354 4355- compiler warning: fix 4356 4357 Fix compiler warning: conversion may lose significant bits 4358 4359- compiler warning: fix 4360 4361 Fix compiler warning: variable was set but never used 4362 4363 Fix compiler warning: clobber ignored 4364 4365- ares_iphlpapi: fix compiler warnings 4366 4367- winsock: compilation fixes 4368 4369 Provide winsock iphlpapi alternative definitions to prevent compilation 4370 failures when using a variety of winsock header implementations. 4371 4372Daniel Stenberg (17 May 2011) 4373- [David Stuart brought this change] 4374 4375 IPv6-on-windows: find DNS servers correctly 4376 4377- man pages: docs for the c-ares utility programs 4378 4379- ares_parse_ns_reply.c: remove CVSism 4380 4381Yang Tse (27 Mar 2011) 4382- build: fix header inclusion 4383 4384- getservbyport replacement for Win CE 4385 4386- renamed getplatform() to ares__getplatform() to avoid namespace pollution 4387 4388- configure: fix libtool warning 4389 4390 Recent versions of libtool are now tracing usage of AC_CONFIG_MACRO_DIR 4391 macro and warn heavily when not used in configure script along with 4392 ACLOCAL_AMFLAGS in Makefile.am. So in order to make libtool happy 4393 while keeping backwards compatibility this is added. 4394 4395- adig: RFC4034 resource record type detection 4396 4397 Can be tested with: adig -s 8.8.8.8 -t ANY example.com 4398 4399- nameser.h: RFC4034 resource record type definitions 4400 4401- build: move platform stuff to ares_platform.c and ares_platform.h 4402 4403- build: find out windows platform using GetVersionEx() 4404 4405- build: use getenv() replacement function for systems which lack it 4406 4407- setup_once: system error codes for Windows CE 4408 4409- ares_search: use ERRNO macro for portability sake 4410 4411- System's errno.h inclusion cleanup follow-up. 4412 4413 System's errno.h is conditionally included from setup_once.h 4414 4415- Windows CE specific adjustment 4416 4417 All versions of Windows CE support Winsock 1.1 4418 4419- System's errno.h inclusion cleanup. 4420 4421 System's errno.h is conditionally included from setup_once.h 4422 4423- ares_init: fix gethostname error detection on winsock platforms 4424 4425- configure: r-enable temporarily disabled detection of system's inet_ntop() 4426 4427 Detection was temporarily disabled in commit 674e044ccb21f2f63537da53565fce868f 4428 4429Daniel Stenberg (15 Mar 2011) 4430- configure: stop using the deprecated AM_INIT_AUTOMAKE syntax 4431 4432- [Gisle Vanem brought this change] 4433 4434 Watt-32: use errno 4435 4436 Make sure Watt-32 programs use 'errno' even on Win32 targets 4437 4438Guenter Knauf (18 Feb 2011) 4439- Removed commented CLFAGS no longer needed. 4440 4441- Fixed CFLAGS for NetWare. 4442 4443 Added -m32 to enable compilation with x86_64 compilers; 4444 added conditional to set -fpcc-struct-return only for gcc compiler. 4445 4446Daniel Stenberg (18 Feb 2011) 4447- [Gisle Vanem brought this change] 4448 4449 Watt32: fix server init 4450 4451 Somewhere in the process, programs using the Watt-32 tcp/ip stack 4452 stopped working. 4453 4454- [Dima Tisnek brought this change] 4455 4456 config_sortlist: (win32) missing else 4457 4458 Without an else there, contents of "pat" that could have been 4459 successfully set just above, may be clobbered by successive unsuccessful 4460 calls to "xxx_pton" or "ip_addr". 4461 4462Yang Tse (17 Jan 2011) 4463- Makefile.msvc: add a couple of VS version strings 4464 4465- Makefile.msvc: add a couple of VS version strings 4466 4467- build: add install target to Makefile.msvc 4468 4469Daniel Stenberg (27 Dec 2010) 4470- ares_set_servers_csv: remove unused variables 4471 4472- init_by_resolv_conf: fix compiler warnings 4473 4474 The code received the return codes in the 'status' variable without 4475 using it. Instead we just ignore those particular errors. 4476 4477- getv4: Value stored to 'dst' is never read 4478 4479- advance_tcp_send_queue: avoid NULL ptr dereference 4480 4481 If given a too large 'num_bytes' value, it would cause a NULL ptr 4482 dereference. Instead the code will now break out of the loop at the end 4483 of the list. 4484 4485- [Peter Pentchev brought this change] 4486 4487 configure: fix a bashism 4488 4489- cleanup: avoid unsafe typecasts 4490 4491 Avoid the risk of reading 16bit data from an unaligned address by using 4492 a macro that is adapted for this. 4493 4494- [Stefan Bühler brought this change] 4495 4496 ares_expand_name: Fix encoded length for indirect root 4497 4498Yang Tse (18 Dec 2010) 4499- build: add some explicit file references to VS project files 4500 4501- config-win32: provide HAVE_ASSERT_H definition 4502 4503- build: include ares_nowarn in sample program VS project files 4504 4505- build: include ares_nowarn among SAMPLESOURCES and SAMPLEHEADERS 4506 4507- configure: temporarily disable detection of system's inet_ntop() 4508 4509 This is done to allow compilation of ares_inet_ntop() by some daily 4510 builds picky compilers that otherwise do not need this function. 4511 4512- changes: mention last fix 4513 4514- ares_inet_ntop: remove definition and usage of macro SPRINTF 4515 4516 Existing definition of SPRINTF always resulted in sprintf() being used, 4517 and sprintf() returning 'int' is already used throughout the library. 4518 4519- ares_inet_ntop: reapply changes from previous c-ares version (III) 4520 4521 - Replace 'u_char' with 'unsigned char'. 4522 - Replace 'u_int' with 'unsigned int'. 4523 - use macros ERRNO and SET_ERRNO() for errno handling. 4524 4525- ares_inet_ntop: reapply changes from previous c-ares version (II) 4526 4527 - Remove rcsid. 4528 - Adjust header file inclusions. 4529 - ares_inet_ntop used only on systems without a proper inet_ntop function. 4530 4531- ares_inet_ntop: reapply changes from previous c-ares version (I) 4532 4533 - Replace tabs with spaces. 4534 - Use ANSI C style for function declarations and definitions. 4535 - Use sizeof with parentheses. 4536 4537- ares_inet_ntop: fix off by one error triggering out of bounds write 4538 4539 ares_inet_ntop would trigger an out of bounds write when the representation 4540 of the address required 15 characters, due to not taking in account null 4541 termination character. 4542 4543 Full import of inet_ntop.c from bind-9.5.3rc1 to pull additional fixes. 4544 4545- ares_nowarn: add conditional inclusion of assert.h header 4546 4547- fix compiler warning: conversion may lose significant bits 4548 4549- ares_inet_net_pton: fix non-rejection of some malformed literals 4550 4551 ares_inet_net_pton would return wrong values when excessively large, 4552 and invalid, netmasks are used. Fixes are from bind-9.5.3rc1, 4553 issue also described in the WLB-2008080064 advisory. 4554 4555- setup_once: provide ISASCII macro 4556 4557- configure: inet_net_pton function check adjustments 4558 4559 Define HAVE_INET_NET_PTON only when system's inet_net_pton function is IPv6 4560 capable and is not affected by the WLB-2008080064 advisory. 4561 4562 HAVE_INET_NET_PTON_IPV6 is no longer defined nor used. 4563 4564- ares_init: fix detection of semicolon comments in resolv.conf 4565 4566 File resolv.conf may either use a hash '#' or a semicolon ';' character as an 4567 indication that the rest of the line is a comment. This fixes not recognizing 4568 the semicolon as a valid comment indicator in resolv.conf. 4569 4570- version: start working on 1.7.5 4571 4572Version 1.7.4 (8 Dec 2010) 4573 4574Daniel Stenberg (8 Dec 2010) 4575- release-preps: CHANGES and RELEASE-NOTES synced 4576 4577- ares_set_local_*: added in 1.7.4, not before 4578 4579Yang Tse (3 Dec 2010) 4580- build: provide SIZEOF_SIZE_T definition for non-configure builds 4581 4582- build: config.dos renamed to config-dos.h 4583 4584- build: provide SIZEOF_SIZE_T netware definition 4585 4586- ares_gethostbyaddr: fix compiler warning: conversion may lose significant bits 4587 4588- configure: undo using autobuilds to temporarily verify strict aliasing warnings. 4589 4590- fix compiler warning: rounding, sign extension, or loss of accuracy may result 4591 4592Daniel Stenberg (2 Dec 2010) 4593- [Ben Noordhuis brought this change] 4594 4595 ares_parse_a_reply: fix CNAME response parsing 4596 4597 Reply to a CNAME query doesn't contain addresses, causing 4598 ares_parse_a_reply() to bail out with ARES_ENODATA 4599 4600 Bug: http://groups.google.com/group/nodejs/browse_thread/thread/a1268c9ea5e9ad9b 4601 4602Yang Tse (1 Dec 2010) 4603- fix compiler warning: conversion may lose significant bits 4604 4605- atoi: remove atoi usage 4606 4607- ares_init: fix compiler warning: conversion may lose significant bits 4608 4609- configure: fix autoconf warning 4610 4611- inet_pton: fix compiler warning 4612 4613- configure: use autobuilds to temporarily verify strict aliasing warnings. 4614 4615 Temporarily, When cross-compiling with gcc 3.0 or later, enable strict aliasing 4616 rules and warnings. Given that cross-compiled targets autobuilds do not run the 4617 test-suite, there is no risk of running code that violates strict aliasing rules 4618 4619- ares_getnameinfo: Partially revert commit 85520d66e0ac7ac73411bc25e98769a88b2f 4620 4621 Upon socket address family and length validation failure return ARES_ENOTIMP 4622 in callback again, this is the error code documented in man page and used 4623 mostly all over the library. 4624 4625- ares_getnameinfo: Validate socket address family and length. 4626 4627 Validate socket address family and that the socket address length is appropriate 4628 for the specified family. Failure is reported with ARES_EBADFAMILY in callback. 4629 4630- ares_getnameinfo: fix two compiler warnings 4631 4632- Added another VS10 version string 4633 4634- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'. 4635 4636- Revert commit 494274e653936335c255a47599970de3df21e7c4 4637 4638- configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected in body 4639 4640- Fix compiler warning: array subscript has type 'char' 4641 4642- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'. 4643 4644- Revert following commits: 4645 07bc7ea79509bcc9ef6e09151e81766ed00d3392 4646 3392a50ea3f8573ea4b7a9d82b9833dab60cb0e9 4647 9912637d32c9987719a1ea12db591aee2941891c 4648 4649 The purpose of the whole patch was to silence a compiler warning triggered 4650 with GCC 4 on file ares_process.c The specific compiler warning was 4651 'dereferencing type-punned pointer might break strict-aliasing rules'. 4652 4653 A simpler patch will follow to equally silence the warning. 4654 4655- ares_options: reorder header inclusions to make inclusion of 4656 ares_private.h the last included one again. 4657 4658Daniel Stenberg (12 Nov 2010) 4659- [Patrik Thunstrom brought this change] 4660 4661 adig: fix NAPTR parsing 4662 4663 I ran across a small "issue" in your adig example. 4664 4665 It is simply the last part of the NAPTR record, the replacement element, 4666 which is not a string, as currently handled in adig, but a domain name. 4667 4668- ares_save_options: assignments instead of memcpy 4669 4670- init_by_options: don't copy an empty sortlist 4671 4672 If there aren't any sort items to copy, don't bother. Without this 4673 little precaution it would do a malloc(0) which causes undefined 4674 behaviors and is frowned upon by curl's memdebug-system. 4675 4676Guenter Knauf (3 Oct 2010) 4677- Minor Watcom makefile tweaks. 4678 4679Daniel Stenberg (30 Sep 2010) 4680- [Mike Crowe brought this change] 4681 4682 Fix lookup with HOSTALIASES set. 4683 4684 ares__read_line returns ARES_EOF when it reaches the end of the 4685 file. This will happen every time when reading to the end of the 4686 HOSTALIASES file. Unfortunately single_domain treats this error as 4687 being fatal. 4688 4689 Signed-off-by: Mike Crowe <mac@mcrowe.com> 4690 4691Ben Greear (24 Aug 2010) 4692- Add missing break that caused get_ares_servers to fail. 4693 4694 Reported-by: Ning Dong <flintning@163.com> 4695 Signed-off-by: Ben Greear <greearb@candelatech.com> 4696 4697Yang Tse (11 Aug 2010) 4698- configure: werror related adjustments 4699 4700Guenter Knauf (8 Aug 2010) 4701- Added copyright string to ares_version.h and make use of it in other files. 4702 4703- Block created ares_build.h for NetWare to avoid usage from other platforms. 4704 4705- Fix to overwrite default libname. 4706 4707- Some more Watcom makefile massage ... 4708 4709- Some more Watcom makefile massage ... 4710 4711Ben Greear (4 Aug 2010) 4712- sock-addr-storage: Detect and deal with lack of .ss_family member. 4713 4714 AIX, at least, does not have sockaddr_storage.ss_family member. 4715 Detect this in the configure logic and use proper #ifdefs in the 4716 ares_process logic. 4717 4718 Signed-off-by: Ben Greear <greearb@candelatech.com> 4719 Tested-by: Tor Arntsen <tor@spacetec.no> 4720 4721Guenter Knauf (3 Aug 2010) 4722- Added Watcom makefile based on libcurl's Makefile.Watcom. 4723 4724Ben Greear (31 Jul 2010) 4725- typo: Fix compile bug for platforms that don't have sockaddr_storage. 4726 4727 Bug was introduced by me in previous commit. 4728 4729 Signed-off-by: Ben Greear <greearb@candelatech.com> 4730 4731- Fix aliasing warning in gcc 4.4.4 (at least). 4732 4733 Should be no functional change, though the code gets a bit 4734 ugglier. 4735 4736 Signed-off-by: Ben Greear <greearb@candelatech.com> 4737 4738Daniel Stenberg (31 Jul 2010) 4739- ares_set_servers_csv: use ISDIGIT 4740 4741 The IS*() set of macros are preferred to the regular is*() functions as 4742 they help us avoid the most common pitfalls. 4743 4744Ben Greear (30 Jul 2010) 4745- cast arg to isdigit to int 4746 4747 Looks like it might silence a warning on Netware build. 4748 4749 Signed-off-by: Ben Greear <greearb@candelatech.com> 4750 4751- remove all uses of uint32_t 4752 4753 Previous fix forgot a few. 4754 4755 Signed-off-by: Ben Greear <greearb@candelatech.com> 4756 4757- fix signed v/s unsigned casts warning in ares_gethostbyaddr.c 4758 4759 Signed-off-by: Ben Greear <greearb@candelatech.com> 4760 4761- local-bind-fixup: Fix inet_pton warning. 4762 4763 Conditionally include <arpa/inet.h> for inet_pton 4764 headers. 4765 4766 Signed-off-by: Ben Greear <greearb@candelatech.com> 4767 4768- build: Enable compiling with -Werror. 4769 4770 This helps find compile warnings because they simply break 4771 the build. 4772 4773 To use: 4774 ./configure --enable-warnings --enable-werror 4775 4776 Signed-off-by: Ben Greear <greearb@candelatech.com> 4777 4778- ipv6: Fix some build issues related to the local-bind feature. 4779 4780 Signed-off-by: Ben Greear <greearb@candelatech.com> 4781 4782Guenter Knauf (29 Jul 2010) 4783- Replaced uint32_t with unsigned int to fix broken builds on a couple of platforms. 4784 4785Daniel Stenberg (18 Jul 2010) 4786- [Ben Greear brought this change] 4787 4788 local-bind: Support binding to local interface/IPs 4789 4790 Add 3 new functions to set the local binding for the out-going 4791 socket connection, and add ares_set_servers_csv() to set a 4792 list of servers at once as a comma-separated string. 4793 4794 Signed-off-by: Ben Greear <greearb@candelatech.com> 4795 4796- version: now start on 1.7.4 4797 4798- [Andrew C. Morrow brought this change] 4799 4800 fix memory leak in ares_getnameinfo 4801 4802Version 1.7.3 (11 Jun 2010) 4803 4804Daniel Stenberg (11 Jun 2010) 4805- changelogs: updated for 1.7.3 4806 4807- [BogDan Vatra brought this change] 4808 4809 init: allow c-ares to work on Android OS 4810 4811- changelog: fill in the 1.7.2 changes 4812 4813- added another pdf to ignore 4814 4815Yang Tse (11 Jun 2010) 4816- add ares_parse_mx_reply.c to VS dsp file 4817 4818Daniel Stenberg (10 Jun 2010) 4819- tarball: add $(CSOURCES) $(HHEADERS) to EXTRA_DIST 4820 4821 It's not clear to me why we need this, but we apparently may 4822 otherwise not get all files bundled in the dist tarball. 4823 4824- version: start working on 1.7.3 4825 4826Version 1.7.2 (10 Jun 2010) 4827 4828Daniel Stenberg (10 Jun 2010) 4829- RELEASE-NOTES: 1.7.2 details added 4830 4831- [Jakub Hrozek brought this change] 4832 4833 ares_init: Last, not first instance of domain or search should win 4834 4835- style: make code less than 80 columns wide 4836 4837Yang Tse (31 May 2010) 4838- [Tor Arntsen brought this change] 4839 4840 improve alternative definition of bool to use enum instead of unsigned char 4841 4842- fix VS2010 compiler warnings 4843 4844Daniel Stenberg (18 Apr 2010) 4845- [Jérémy Lal brought this change] 4846 4847 added ares_parse_mx_reply 4848 4849- repair the file mode 4850 4851- remove all $Id$ lines 4852 4853- remove all .cvsignore files 4854 4855- spell fix 4856 4857 reported by Gregor Jasny on the mailing list 4858 4859- [Peter Pentchev brought this change] 4860 4861 Fix a couple of typos and grammar nits. 4862 4863- ignore the GPG signature files too 4864 4865- start the journey towards 1.7.2 4866 4867- no longer CVS tagging 4868 4869- ignore generated PDFs 4870 4871Version 1.7.1 (23 Mar 2010) 4872 4873Daniel Stenberg (23 Mar 2010) 4874- 1.7.1 4875 4876- made README the primary readme file 4877 4878 ... and did README.cares to contain a historic reason etc. 4879 4880- s/CVS/git 4881 4882- git now, not CVS 4883 4884- ignore lots of generated files 4885 4886- [Daniel Johnson brought this change] 4887 4888 Fix warnings for clang 4889 4890Yang Tse (17 Mar 2010) 4891- replaced intel compiler option -no-ansi-alias with -fno-strict-aliasing 4892 4893- update outdated serial number 4894 4895- fix compiler warning 4896 4897- watt32 compilation fix 4898 4899- Added another VS10 version string 4900 4901- fix line break 4902 4903- removed usage of 's6_addr', fixing compilation issue triggered with no 4904 longer using 'in6_addr' but only our 'ares_in6_addr' struct 4905 4906Daniel Stenberg (5 Mar 2010) 4907- Daniel Johnson provided fixes for building with the clang compiler 4908 4909Yang Tse (5 Mar 2010) 4910- Added IPv6 name servers support 4911 4912Gisle Vanem (5 Mar 2010) 4913- Ops!. Readded ares_nowarn.h. 4914 4915- Added ares_nowarn.c. 4916 4917Yang Tse (28 Feb 2010) 4918- Added SIZEOF_INT and SIZEOF_SHORT definitions for non-configure systems 4919 4920- Added ares_nowarn.* to VC6 project file 4921 4922- Added SIZEOF_INT definition 4923 4924- fix compiler warning 4925 4926- fix compiler warning 4927 4928- fix compiler warning 4929 4930Daniel Stenberg (17 Feb 2010) 4931- ares_reinit() 4932 4933 - To allow an app to force a re-read of /etc/resolv.conf etc, pretty much 4934 like the res_init() resolver function offers 4935 4936- - Tommie Gannert pointed out a silly bug in ares_process_fd() since it didn't 4937 check for broken connections like ares_process() did. Based on that, I 4938 merged the two functions into a single generic one with two front-ends. 4939 4940Yang Tse (30 Dec 2009) 4941- VMS specific preprocessor symbol checking adjustments 4942 4943- Mention last changes 4944 4945- - Fix configure_socket() to use ares_socket_t instead of int data type. 4946 4947- - Where run-time error checks enabling compiler option /GZ was used it is now 4948 replaced with equivalent /RTCsu for Visual Studio 2003 and newer versions. 4949 4950 - Compiler option /GX is now replaced with equivalent /EHsc for all versions. 4951 4952- - Ingmar Runge noticed that Windows config-win32.h configuration file 4953 did not include a definition for HAVE_CLOSESOCKET which resulted in 4954 function close() being inappropriately used to close sockets. 4955 4956Daniel Stenberg (30 Nov 2009) 4957- start working on 1.7.1 4958 4959Version 1.7.0 (27 Nov 2009) 4960 4961Yang Tse (27 Nov 2009) 4962- Preserve empty line following last target 4963 4964- - Larry Lansing fixed ares_parse_srv_reply to properly parse replies 4965 which might contain non-SRV answers, skipping over potential non-SRV 4966 ones such as CNAMEs. 4967 4968- When using icc, compile with -fpic and link with intel dynamic libraries. 4969 4970- Added 'currently' in italics to insist on transient situation. 4971 4972- Fix language 4973 4974- Daniel wants upcoming release to be 1.7.0 4975 4976- Mention last changes 4977 4978- - Removed from external interface preprocessor symbol definition for 4979 CARES_HAVE_ARES_FREE_DATA. Current functionality of ares_free_data() 4980 makes it unnecessary. 4981 4982- Added README.msvc 4983 4984- Changed c-ares naming conventions when using MSVC as described in README.msvc 4985 4986- - Mention other recent changes 4987 4988- - Jakub Hrozek renamed addrttl and addr6ttl structs to ares_addrttl and 4989 ares_addr6ttl in order to prevent name space pollution, along with 4990 necessary changes to code base and man pages.This change does not break 4991 ABI, there is no need to recompile existing applications. But existing 4992 applications using these structs with the old name will need source code 4993 adjustments when recompiled using c-ares 1.6.1. 4994 4995- - Jakub Hrozek fixed more function prototypes in man pages to sync them 4996 with the ones declared in ares.h 4997 4998- Make configure remove the ares_build.h file included in distribution tarballs. 4999 5000- Fix macro redefinition. 5001 5002- Fix name space pollution. 5003 5004- Allow using different extra import libraries for debug and release builds. 5005 5006- Add manifest stuff to msvc makefile 5007 5008- Sync man page with reality 5009 5010- Add missing external API decoration for ares_set_socket_callback() 5011 5012- Add ares_free_data() man page. 5013 5014- - Provide in external interface preprocessor symbol definitions for 5015 CARES_HAVE_ARES_FREE_DATA as an indication of function availability. 5016 5017- Remove typecast 5018 5019- Fix comment 5020 5021- Add ares_data.c and ares_data.h 5022 5023- Jakub Hrozek modified ares_parse_srv_reply() and ares_parse_txt_reply() API 5024 to return a linked lists of results. These were also modified to internally 5025 use the ares_data memory struct and as such its result must be free'ed with 5026 ares_free_data(). 5027 5028- Initial support for the generic ares_free_data() function that will allow 5029 applications to free memory allocated and returned by some c-ares funtions. 5030 5031- Make usage of calloc()'s arguments consistent with rest of code base 5032 5033- workaround icc 9.1 optimizer issue 5034 5035- Add icc fvisibility bug test 5036 5037- Fix icc 9.0 compiler warning: external definition with no prior declaration 5038 5039- Fix three var names 5040 5041- Add check for assert.h header file 5042 5043- getaddrinfo is fully thread safe on solaris versions which 5044 implement the function even when h_errno is not a macro. 5045 5046 The h_errno macro test now only done on systems for which there 5047 is no hard coded knowledge about getaddrinfo's thread safeness. 5048 5049- Remove files generated on previous buildconf/configure run 5050 5051- Remove enable-thread / disable-thread configure option. These were only placebo 5052 options. The library is always built as thread safe as possible on every system. 5053 5054- Refactor how preprocessor symbol _THREAD_SAFE definition is done. 5055 5056- Assume that getaddrinfo is thread safe, unless hard coded 5057 knowledge says the contrary or h_errno is not defined. 5058 5059- Related with the threadsafe capability of getaddrinfo: 5060 5061 - Constantine Sapuntzakis reported that Darwin 6.0 a.k.a. MAC OS X 10.2 5062 and newer have a threadsafe getaddrinfo. 5063 5064 - Fix Dragonfly BSD triplet detection. 5065 5066 - In case the hard-coded knowledge says that getaddrinfo is threadsafe, 5067 an additional check is done to verify that h_errno is also defined. 5068 If h_errno isn't defined, we finally assume that it isn't threadsafe. 5069 Jamie Lokier provided the inspiration for this extra check. 5070 5071- AIX 5.2 and newer have threadsafe getaddrinfo. 5072 5073 Add some comments to better understand what the regex's pretend to achieve. 5074 5075- HP-UX 11.11 and later have threadsafe getaddrinfo 5076 5077- Check if getaddrinfo is threadsafe when function check allows it to be used 5078 5079- Renamed fpGetNetworkParams and fpSystemFunction036 to avoid namespace pollution with static library 5080 5081- Add kernel32.lib 5082 5083- Mention last changes 5084 5085- Reinstate copyright symbol lost in previous commit 5086 5087- Make some strings different in resource file for debug or release builds 5088 5089- Ignore more subdirs 5090 5091- Fix compiler warning: conditional expression is constant 5092 5093- Sync linker and resource compiler options with Makefile.msvc 5094 5095- Follow Makefile.msvc subdirectory naming scheme, and sync compiler options 5096 5097- Updated MSVC makefile that allows building dynamic and static 5098 c-ares libraries in debug and release flavours. 5099 5100 Additionally each of the three sample programs is built against 5101 each of the four possible c-ares libraries, generating all this 5102 a total number of 12 executables and 4 libraries. 5103 5104- Test for USE_WINSOCK since it is more restrictive than WIN32 5105 5106- Make header inclusion depend on HAVE_*_H definition 5107 5108- Remove unneeded preprocessor directives 5109 5110- Adjust c-ares include paths for memory tracking enabled (--enable-curldebug) builds 5111 5112- source files used by sample programs 5113 5114- Renamed c-ares setup.h to ares_setup.h 5115 5116- Adjust include paths to take in account that currently: 5117 5118 c-ares with --enable-curldebug uses memdebug.h from libcurl's lib subdirectory. 5119 5120 memdebug.h needs access to libcurl's setup.h from libcurl's lib subdirectory 5121 and also needs access to libcurl's generated curl_config.h 5122