[git commit] nslookup: code shrink

Denys Vlasenko vda.linux at googlemail.com
Tue May 9 17:32:29 UTC 2023


commit: https://git.busybox.net/busybox/commit/?id=dc84002a8256feb1cc7f0fb70bdbfc998deeba4a
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
send_queries                                         725     723      -2
nslookup_main                                        822     820      -2
add_query                                             89      86      -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-7)               Total: -7 bytes

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 networking/nslookup.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/networking/nslookup.c b/networking/nslookup.c
index 24eae4010..249083e24 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -589,6 +589,7 @@ static int RESOLVFUNC res_mkquery(int op, const char *dname, int class, int type
 	if (l>253 || buflen<n || op>15u || class>255u || type>255u)
 		return -1;
 
+//TODO: why do we even have the q[] array? Use buf[] directly!
 	/* Construct query template - ID will be filled later */
 	memset(q, 0, n);
 	q[2] = op*8 + 1;
@@ -637,7 +638,12 @@ struct query {
 	unsigned qlen;
 //	unsigned latency;
 //	uint8_t rcode;
-	unsigned char query[512];
+	/* res_mkquery() balks on names > 253 chars.
+	 * The formed query is 253+18 chars at max.
+	 * Real hostnames are nowhere near that long anyway.
+	 * Use of power-of-2 size means smaller code.
+	 */
+	unsigned char query[512 - sizeof(int) - sizeof(char*)];
 //	unsigned char reply[512];
 };
 


More information about the busybox-cvs mailing list