diff --git a/exec/load/dns.js b/exec/load/dns.js index 24ba0c967e2e7ce72a70e0b79b65397cc882ba4a..0d289b4fb027c4f75dff43480c747f740ff3c3d5 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]),