summaryrefslogtreecommitdiff
path: root/test/parallel/test-dns-resolveany-bad-ancount.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/parallel/test-dns-resolveany-bad-ancount.js')
-rw-r--r--test/parallel/test-dns-resolveany-bad-ancount.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/parallel/test-dns-resolveany-bad-ancount.js b/test/parallel/test-dns-resolveany-bad-ancount.js
new file mode 100644
index 0000000000..25ce15935c
--- /dev/null
+++ b/test/parallel/test-dns-resolveany-bad-ancount.js
@@ -0,0 +1,35 @@
+'use strict';
+const common = require('../common');
+const dnstools = require('../common/dns');
+const dns = require('dns');
+const assert = require('assert');
+const dgram = require('dgram');
+
+const server = dgram.createSocket('udp4');
+
+server.on('message', common.mustCall((msg, { address, port }) => {
+ const parsed = dnstools.parseDNSPacket(msg);
+ const domain = parsed.questions[0].domain;
+ assert.strictEqual(domain, 'example.org');
+
+ const buf = dnstools.writeDNSPacket({
+ id: parsed.id,
+ questions: parsed.questions,
+ answers: { type: 'A', address: '1.2.3.4', ttl: 123, domain },
+ });
+ // Overwrite the # of answers with 2, which is incorrect.
+ buf.writeUInt16LE(2, 6);
+ server.send(buf, port, address);
+}));
+
+server.bind(0, common.mustCall(() => {
+ const address = server.address();
+ dns.setServers([`127.0.0.1:${address.port}`]);
+
+ dns.resolveAny('example.org', common.mustCall((err) => {
+ assert.strictEqual(err.code, 'EBADRESP');
+ assert.strictEqual(err.syscall, 'queryAny');
+ assert.strictEqual(err.hostname, 'example.org');
+ server.close();
+ }));
+}));