未验证 提交 bc8e24c6 编写于 作者: U Uwe Kleine-König 提交者: Christian Marangi

busybox: nslookup: ensure unique transaction IDs for the DNS queries

On machines with a coarse monotonic clock (here: TP-Link RE200 powered
by a MediaTek MT7620A) it can happen that the two DNS requests (for A
and AAAA) share the same transaction ID. If this happens the second
reply is wrongly dropped and nslookup reports "No answer".

Fix this by ensuring that the transaction IDs are unique.
Signed-off-by: NUwe Kleine-König <uwe@kleine-koenig.org>
(cherry picked from commit 63e5ba8e)
Signed-off-by: NChristian Marangi <ansuelsmth@gmail.com>
上级 f1de43d0
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;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册