From 3ae3d9e4efe8a468dbc42f203b0938caa9cd33c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Fri, 2 Apr 2021 02:54:23 -0400
Subject: [PATCH] Fix TXT record parsing.

---
 exec/load/dns.js | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/exec/load/dns.js b/exec/load/dns.js
index 24ba0c967e..0d289b4fb0 100644
--- a/exec/load/dns.js
+++ b/exec/load/dns.js
@@ -48,7 +48,7 @@ function DNS(servers) {
 
 		function get_string(resp, offset) {
 			var len = ascii(resp[offset]);
-			return {'len':len + 1, 'string':resp.substr(1, len)};
+			return {'len':len + 1, 'string':resp.substr(offset + 1, len)};
 		}
 
 		function get_name(resp, offset) {
@@ -145,7 +145,14 @@ function DNS(servers) {
 					tmp.exchange = get_name(resp, offset + 2).name;
 					return tmp;
 				case 16: // TXT
-					return get_string(resp, offset).string;
+					tmp = [];
+					tmp2 = 0;
+					do {
+						tmp3 = get_string(resp, offset + tmp2);
+						tmp.push(tmp3.string);
+						tmp2 += tmp3.len;
+					} while (tmp2 < len);
+					return tmp;
 				case 28:
 					return format("%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
 					               ascii(resp[offset + 0]),  ascii(resp[offset + 1]),
-- 
GitLab