[PATCH] test: fix dns test case failures after c-ares update to 1.21.0+
authorBrad House <brad@brad-house.com>
Wed, 15 Nov 2023 14:33:47 +0000 (09:33 -0500)
committerJérémy Lal <kapouer@melix.org>
Sun, 3 Dec 2023 21:41:14 +0000 (22:41 +0100)
c-ares has made intentional changes to the behavior of TXT records
to comply with RFC 7208, which concatenates multiple strings for
the same TXT record into a single string.  Multiple TXT records
are not concatenated.

Also, response handling has changed, such that a response which is
completely invalid in formatting is thrown away as a malicious
forged/spoofed packet rather than returning EBADRESP.  This is one
step toward RFC 9018 (EDNS COOKIES) which will require the message
to at least be structurally valid to validate against spoofed
records.

Fix By: Brad House (@bradh352)

PR-URL: https://github.com/nodejs/node/pull/50743
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Fixes: https://github.com/nodejs/node/issues/50741
Refs: https://github.com/nodejs/node/issues/50444

Gbp-Pq: Topic build
Gbp-Pq: Name test_dns_resolveany_bad_ancount.patch

test/parallel/test-dns-resolveany-bad-ancount.js
test/parallel/test-dns-resolveany.js

index 71fcbe03cd58f1537820598b498728d947a0efc5..5cea388ad6a9f06b90e9f4c847414c491ab5b8cc 100644 (file)
@@ -30,13 +30,14 @@ server.bind(0, common.mustCall(async () => {
   dnsPromises.resolveAny('example.org')
     .then(common.mustNotCall())
     .catch(common.expectsError({
-      code: 'EBADRESP',
+      // May return EBADRESP or ETIMEOUT
+      code: /^(?:EBADRESP|ETIMEOUT)$/,
       syscall: 'queryAny',
       hostname: 'example.org'
     }));
 
   dns.resolveAny('example.org', common.mustCall((err) => {
-    assert.strictEqual(err.code, 'EBADRESP');
+    assert.notStrictEqual(err.code, 'SUCCESS');
     assert.strictEqual(err.syscall, 'queryAny');
     assert.strictEqual(err.hostname, 'example.org');
     const descriptor = Object.getOwnPropertyDescriptor(err, 'message');
index 0bbfe8f9f18432a4fe0561d2bec4f5680366a535..f64dbfc93e2da872e8a894fcb491108d28331214 100644 (file)
@@ -11,7 +11,7 @@ const answers = [
   { type: 'AAAA', address: '::42', ttl: 123 },
   { type: 'MX', priority: 42, exchange: 'foobar.com', ttl: 124 },
   { type: 'NS', value: 'foobar.org', ttl: 457 },
-  { type: 'TXT', entries: [ 'v=spf1 ~all', 'xyz\0foo' ] },
+  { type: 'TXT', entries: [ 'v=spf1 ~all xyz\0foo' ] },
   { type: 'PTR', value: 'baz.org', ttl: 987 },
   {
     type: 'SOA',