diff options
Diffstat (limited to 'src/lib/libc')
| -rw-r--r-- | src/lib/libc/net/getrrsetbyname.c | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/lib/libc/net/getrrsetbyname.c b/src/lib/libc/net/getrrsetbyname.c index bc4b88bbbd..87ae8fc229 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.3 2001/08/07 10:16:00 deraadt Exp $ */ | 1 | /* $OpenBSD: getrrsetbyname.c,v 1.4 2001/08/16 18:16:43 ho Exp $ */ |
| 2 | 2 | ||
| 3 | /* | 3 | /* |
| 4 | * Copyright (c) 2001 Jakob Schlyter. All rights reserved. | 4 | * Copyright (c) 2001 Jakob Schlyter. All rights reserved. |
| @@ -253,20 +253,26 @@ freerrset(struct rrsetinfo *rrset) | |||
| 253 | if (rrset == NULL) | 253 | if (rrset == NULL) |
| 254 | return; | 254 | return; |
| 255 | 255 | ||
| 256 | for (i = 0; i < rrset->rri_nrdatas; i++) { | 256 | if (rrset->rri_rdatas) { |
| 257 | if (rrset->rri_rdatas[i].rdi_data == NULL) | 257 | for (i = 0; i < rrset->rri_nrdatas; i++) { |
| 258 | break; | 258 | if (rrset->rri_rdatas[i].rdi_data == NULL) |
| 259 | free(rrset->rri_rdatas[i].rdi_data); | 259 | break; |
| 260 | free(rrset->rri_rdatas[i].rdi_data); | ||
| 261 | } | ||
| 262 | free(rrset->rri_rdatas); | ||
| 260 | } | 263 | } |
| 261 | free(rrset->rri_rdatas); | ||
| 262 | 264 | ||
| 263 | for (i = 0; i < rrset->rri_nsigs; i++) { | 265 | if (rrset->rri_sigs) { |
| 264 | if (rrset->rri_sigs[i].rdi_data == NULL) | 266 | for (i = 0; i < rrset->rri_nsigs; i++) { |
| 265 | break; | 267 | if (rrset->rri_sigs[i].rdi_data == NULL) |
| 266 | free(rrset->rri_sigs[i].rdi_data); | 268 | break; |
| 269 | free(rrset->rri_sigs[i].rdi_data); | ||
| 270 | } | ||
| 271 | free(rrset->rri_sigs); | ||
| 267 | } | 272 | } |
| 268 | free(rrset->rri_sigs); | 273 | |
| 269 | free(rrset->rri_name); | 274 | if (rrset->rri_name) |
| 275 | free(rrset->rri_name); | ||
| 270 | free(rrset); | 276 | free(rrset); |
| 271 | } | 277 | } |
| 272 | 278 | ||
| @@ -280,7 +286,7 @@ parse_dns_response(const char *answer, int size) | |||
| 280 | const char *cp; | 286 | const char *cp; |
| 281 | 287 | ||
| 282 | /* allocate memory for the response */ | 288 | /* allocate memory for the response */ |
| 283 | resp = malloc(sizeof(*resp)); | 289 | resp = calloc(1, sizeof(*resp)); |
| 284 | if (resp == NULL) | 290 | if (resp == NULL) |
| 285 | return (NULL); | 291 | return (NULL); |
| 286 | 292 | ||
| @@ -453,7 +459,8 @@ free_dns_query(struct dns_query *p) | |||
| 453 | if (p == NULL) | 459 | if (p == NULL) |
| 454 | return; | 460 | return; |
| 455 | 461 | ||
| 456 | free(p->name); | 462 | if (p->name) |
| 463 | free(p->name); | ||
| 457 | free_dns_query(p->next); | 464 | free_dns_query(p->next); |
| 458 | free(p); | 465 | free(p); |
| 459 | } | 466 | } |
| @@ -464,8 +471,10 @@ free_dns_rr(struct dns_rr *p) | |||
| 464 | if (p == NULL) | 471 | if (p == NULL) |
| 465 | return; | 472 | return; |
| 466 | 473 | ||
| 467 | free(p->name); | 474 | if (p->name) |
| 468 | free(p->rdata); | 475 | free(p->name); |
| 476 | if (p->rdata) | ||
| 477 | free(p->rdata); | ||
| 469 | free_dns_rr(p->next); | 478 | free_dns_rr(p->next); |
| 470 | free(p); | 479 | free(p); |
| 471 | } | 480 | } |
