Skip to content

Commit da8d373

Browse files
authored
Add files via upload
1 parent 8c1f218 commit da8d373

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

net.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ int8_t resolve_net(char* domain, char* output, uint16_t nsType) {
144144
strcpy(buf+12, qname);
145145

146146
uint8_t typePos = 12+domainLen+2; // header + domain + octetCounter + \0
147-
buf[typePos] = (nsType >> 8) & 0xFF;
147+
buf[typePos] = (nsType >> 8) & 0xFF; // set type
148148
buf[typePos+1] = nsType & 0xFF;
149149
buf[typePos+3] = 0x01;
150150
send_net(conn, buf, typePos+4);
@@ -158,25 +158,26 @@ int8_t resolve_net(char* domain, char* output, uint16_t nsType) {
158158
strcpy(output, "No results");
159159
return -2;
160160
}
161-
uint16_t answStart = 12 + domainLen + 2 + 4; // header(12) + QName + QTYPEQCLASS(4)
162161
output[0] = 0;
163-
for (uint8_t i = 0; i<answerCount; i++) {
162+
uint16_t answStart = 12 + domainLen + 2 + 4; // header(12) + QName + QTYPEQCLASS(4)
163+
for (uint8_t v = 0; v<answerCount; v++) {
164164
// answStart + 0 | 2b NAME pointer
165165
// answStart + 2 | 2b Dns type
166166
// answStart + 4 | 2b Class
167167
// answStart + 6 | 4b TTL
168168
// answStart + 10 | 2b RDATA len
169169
// answStart + 12 | xb RDATA
170-
uint16_t rdatalen = (buf[answStart+10] << 8) | (buf[answStart+11]) - 1;
170+
uint16_t rdatalen = (buf[answStart+10] << 8) | (buf[answStart+11]);
171171
uint16_t outputLen = strlen(output);
172-
if (outputLen != 0) {output[outputLen] = ' '; outputLen++;}
172+
if (outputLen != 0) {output[outputLen] = ' '; outputLen++; output[outputLen] = 0;}
173173
if (nsType == dnsA) { // A
174174
if ((buf[answStart+2] << 8 | (buf[answStart+3]) == nsType)) {
175-
char ipbytes[4];
176-
ipbytes[0] = buf[answStart+12];
177-
ipbytes[1] = buf[answStart+13];
178-
ipbytes[2] = buf[answStart+14];
179-
ipbytes[3] = buf[answStart+15];
175+
char ipbytes[5] = "";
176+
uint16_t ipIndex = answStart+12;
177+
ipbytes[0] = buf[ipIndex];
178+
ipbytes[1] = buf[ipIndex+1];
179+
ipbytes[2] = buf[ipIndex+2];
180+
ipbytes[3] = buf[ipIndex+3];
180181
inet_ntop(AF_INET, ipbytes, output+outputLen, INET_ADDRSTRLEN);
181182
}
182183
} else if (nsType == dnsCAA) { // CAA
@@ -229,14 +230,14 @@ int8_t resolve_net(char* domain, char* output, uint16_t nsType) {
229230
}
230231
} else { // TXT, CNAME...
231232
uint16_t e = 0;
233+
char rdata[rdatalen+1];
232234
for (; e<rdatalen; e++) {
233-
char rdata[rdatalen];
234235
rdata[e] = buf[answStart+13+e];
235-
strcpy(output+outputLen, rdata);
236236
}
237+
rdata[rdatalen-1] = 0;
238+
strcpy(output+outputLen, rdata);
237239
}
238-
answStart += domainLen+12+rdatalen+3;
239-
i++;
240+
answStart += 12+rdatalen;
240241
}
241242
close_net(conn);
242243
return 0;

0 commit comments

Comments
 (0)