Files
openwrt-armor-g5/package/utils/busybox/patches/530-nslookup-ensure-unique-transaction-IDs-for-the-DNS-queries.patch
domenico 27c9d80f51
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Initial commit
2025-06-24 12:51:15 +02:00

43 lines
1.4 KiB
Diff

From: Uwe Kleine-König <uwe@kleine-koenig.org>
Date: Sat, 8 Oct 2022 19:22:52 +0200
Subject: [PATCH] nslookup: ensure unique transaction IDs for the DNS queries
The transaction IDs generated by res_mkquery() for both glibc and musl only
depends on the state of the monotonic clock.
For some machines (here: a TP-Link RE200 powered by a MediaTek MT7620A)
the monotonic clock has a coarse resolution (here: 20 µs) and it can happen
that the requests for A and AAAA share the same transaction ID.
In that case the mapping from received responses to the sent queries
doesn't work and name resolution fails as follows:
# /bin/busybox nslookup heise.de
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
Name: heise.de
Address: 193.99.144.80
*** Can't find heise.de: No answer
because the AAAA reply is dropped as a duplicate reply to the A query.
To prevent this make sure the transaction IDs are unique.
Forwarded: http://lists.busybox.net/pipermail/busybox/2022-October/089911.html
---
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -978,6 +978,10 @@ int nslookup_main(int argc UNUSED_PARAM,
}
}
+ /* Ensure the Transaction IDs are unique */
+ for (rc = 1; rc < G.query_count; rc++)
+ G.query[rc].query[1] = G.query[rc - 1].query[1] + 1;
+
for (rc = 0; rc < G.serv_count;) {
int c;