summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorderaadt <>2001-08-07 10:16:00 +0000
committerderaadt <>2001-08-07 10:16:00 +0000
commit738593f3dda39a38d3edb4180531231f073590c5 (patch)
tree91c0a462a6a3c56de8f0fcda1c5eeb5ba5d4508a /src/lib
parentf9ba063d6571e5cf8dd10e4c9b4cee46449544c7 (diff)
downloadopenbsd-738593f3dda39a38d3edb4180531231f073590c5.tar.gz
openbsd-738593f3dda39a38d3edb4180531231f073590c5.tar.bz2
openbsd-738593f3dda39a38d3edb4180531231f073590c5.zip
KNF; and i bonked jakob in the head for it too, with a plastic bottle of coke
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libc/net/getrrsetbyname.c40
1 files changed, 16 insertions, 24 deletions
diff --git a/src/lib/libc/net/getrrsetbyname.c b/src/lib/libc/net/getrrsetbyname.c
index 76ca9ac6b7..bc4b88bbbd 100644
--- a/src/lib/libc/net/getrrsetbyname.c
+++ b/src/lib/libc/net/getrrsetbyname.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getrrsetbyname.c,v 1.2 2001/08/06 15:00:48 jakob Exp $ */ 1/* $OpenBSD: getrrsetbyname.c,v 1.3 2001/08/07 10:16:00 deraadt Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001 Jakob Schlyter. All rights reserved. 4 * Copyright (c) 2001 Jakob Schlyter. All rights reserved.
@@ -43,7 +43,6 @@
43 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 43 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
44 */ 44 */
45 45
46
47#include <sys/types.h> 46#include <sys/types.h>
48#include <netinet/in.h> 47#include <netinet/in.h>
49#include <arpa/nameser.h> 48#include <arpa/nameser.h>
@@ -54,7 +53,6 @@
54 53
55#define ANSWER_BUFFER_SIZE 1024*64 54#define ANSWER_BUFFER_SIZE 1024*64
56 55
57
58struct dns_query { 56struct dns_query {
59 char *name; 57 char *name;
60 u_int16_t type; 58 u_int16_t type;
@@ -94,15 +92,15 @@ static int count_dns_rr(struct dns_rr *, u_int16_t, u_int16_t);
94 92
95int 93int
96getrrsetbyname(const char *hostname, unsigned int rdclass, 94getrrsetbyname(const char *hostname, unsigned int rdclass,
97 unsigned int rdtype, unsigned int flags, 95 unsigned int rdtype, unsigned int flags,
98 struct rrsetinfo **res) 96 struct rrsetinfo **res)
99{ 97{
100 int result; 98 int result;
101 struct rrsetinfo *rrset = NULL; 99 struct rrsetinfo *rrset = NULL;
102 struct dns_response *response; 100 struct dns_response *response;
103 struct dns_rr *rr; 101 struct dns_rr *rr;
104 struct rdatainfo *rdata; 102 struct rdatainfo *rdata;
105 unsigned length, index_ans, index_sig; 103 unsigned int length, index_ans, index_sig;
106 char answer[ANSWER_BUFFER_SIZE]; 104 char answer[ANSWER_BUFFER_SIZE];
107 105
108 /* check for invalid class and type */ 106 /* check for invalid class and type */
@@ -124,7 +122,7 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
124 } 122 }
125 123
126 /* initialize resolver */ 124 /* initialize resolver */
127 if ((_res.options & RES_INIT) == 0 && res_init() == -1) { 125 if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
128 result = ERRSET_FAIL; 126 result = ERRSET_FAIL;
129 goto fail; 127 goto fail;
130 } 128 }
@@ -162,7 +160,7 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
162 goto fail; 160 goto fail;
163 } 161 }
164 162
165 if (response->header.qdcount != 1 ) { 163 if (response->header.qdcount != 1) {
166 result = ERRSET_FAIL; 164 result = ERRSET_FAIL;
167 goto fail; 165 goto fail;
168 } 166 }
@@ -216,7 +214,7 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
216 for (rr = response->answer, index_ans = 0, index_sig = 0; 214 for (rr = response->answer, index_ans = 0, index_sig = 0;
217 rr; rr = rr->next) { 215 rr; rr = rr->next) {
218 216
219 rdata = NULL; 217 rdata = NULL;
220 218
221 if (rr->class == rrset->rri_rdclass && 219 if (rr->class == rrset->rri_rdclass &&
222 rr->type == rrset->rri_rdtype) 220 rr->type == rrset->rri_rdtype)
@@ -229,7 +227,7 @@ getrrsetbyname(const char *hostname, unsigned int rdclass,
229 if (rdata) { 227 if (rdata) {
230 rdata->rdi_length = rr->size; 228 rdata->rdi_length = rr->size;
231 rdata->rdi_data = malloc(rr->size); 229 rdata->rdi_data = malloc(rr->size);
232 230
233 if (rdata->rdi_data == NULL) { 231 if (rdata->rdi_data == NULL) {
234 result = ERRSET_NOMEMORY; 232 result = ERRSET_NOMEMORY;
235 goto fail; 233 goto fail;
@@ -252,9 +250,8 @@ freerrset(struct rrsetinfo *rrset)
252{ 250{
253 u_int16_t i; 251 u_int16_t i;
254 252
255 if (rrset == NULL) { 253 if (rrset == NULL)
256 return; 254 return;
257 }
258 255
259 for (i = 0; i < rrset->rri_nrdatas; i++) { 256 for (i = 0; i < rrset->rri_nrdatas; i++) {
260 if (rrset->rri_rdatas[i].rdi_data == NULL) 257 if (rrset->rri_rdatas[i].rdi_data == NULL)
@@ -269,17 +266,13 @@ freerrset(struct rrsetinfo *rrset)
269 free(rrset->rri_sigs[i].rdi_data); 266 free(rrset->rri_sigs[i].rdi_data);
270 } 267 }
271 free(rrset->rri_sigs); 268 free(rrset->rri_sigs);
272
273 free(rrset->rri_name); 269 free(rrset->rri_name);
274
275 free(rrset); 270 free(rrset);
276} 271}
277 272
278 273/*
279/*
280 * DNS response parsing routines 274 * DNS response parsing routines
281 */ 275 */
282
283static struct dns_response * 276static struct dns_response *
284parse_dns_response(const char *answer, int size) 277parse_dns_response(const char *answer, int size)
285{ 278{
@@ -381,11 +374,11 @@ parse_dns_qsection(const char *answer, int size, const char **cp, int count)
381 374
382 /* type */ 375 /* type */
383 curr->type = _getshort(*cp); 376 curr->type = _getshort(*cp);
384 *cp += INT16SZ; 377 *cp += INT16SZ;
385 378
386 /* class */ 379 /* class */
387 curr->class = _getshort(*cp); 380 curr->class = _getshort(*cp);
388 *cp += INT16SZ; 381 *cp += INT16SZ;
389 } 382 }
390 383
391 return (head); 384 return (head);
@@ -427,15 +420,15 @@ parse_dns_rrsection(const char *answer, int size, const char **cp, int count)
427 420
428 /* type */ 421 /* type */
429 curr->type = _getshort(*cp); 422 curr->type = _getshort(*cp);
430 *cp += INT16SZ; 423 *cp += INT16SZ;
431 424
432 /* class */ 425 /* class */
433 curr->class = _getshort(*cp); 426 curr->class = _getshort(*cp);
434 *cp += INT16SZ; 427 *cp += INT16SZ;
435 428
436 /* ttl */ 429 /* ttl */
437 curr->ttl = _getlong(*cp); 430 curr->ttl = _getlong(*cp);
438 *cp += INT32SZ; 431 *cp += INT32SZ;
439 432
440 /* rdata size */ 433 /* rdata size */
441 curr->size = _getshort(*cp); 434 curr->size = _getshort(*cp);
@@ -454,7 +447,6 @@ parse_dns_rrsection(const char *answer, int size, const char **cp, int count)
454 return (head); 447 return (head);
455} 448}
456 449
457
458static void 450static void
459free_dns_query(struct dns_query *p) 451free_dns_query(struct dns_query *p)
460{ 452{
@@ -500,7 +492,7 @@ count_dns_rr(struct dns_rr *p, u_int16_t class, u_int16_t type)
500 if (p->class == class && p->type == type) 492 if (p->class == class && p->type == type)
501 n++; 493 n++;
502 p = p->next; 494 p = p->next;
503 }; 495 }
504 496
505 return (n); 497 return (n);
506} 498}