aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/lib/libtinyrad/lurl.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libtinyrad/lurl.c')
-rw-r--r--lib/libtinyrad/lurl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/libtinyrad/lurl.c b/lib/libtinyrad/lurl.c
index 98c542d..501c815 100644
--- a/lib/libtinyrad/lurl.c
+++ b/lib/libtinyrad/lurl.c
@@ -612,7 +612,10 @@ tinyrad_urldesc_resolve(
612 if ((sasp = trudp->trud_sockaddrs) == NULL) 612 if ((sasp = trudp->trud_sockaddrs) == NULL)
613 { 613 {
614 if ((sasp = malloc(sizeof(struct sockaddr_storage *))) == NULL) 614 if ((sasp = malloc(sizeof(struct sockaddr_storage *))) == NULL)
615 {
616 freeaddrinfo(res);
615 return(TRAD_ENOMEM); 617 return(TRAD_ENOMEM);
618 };
616 sasp[0] = NULL; 619 sasp[0] = NULL;
617 trudp->trud_sockaddrs = sasp; 620 trudp->trud_sockaddrs = sasp;
618 sas_len = 0; 621 sas_len = 0;
@@ -624,13 +627,19 @@ tinyrad_urldesc_resolve(
624 { 627 {
625 size = sizeof(struct sockaddr_storage *) * (sas_len+2); 628 size = sizeof(struct sockaddr_storage *) * (sas_len+2);
626 if ((ptr = realloc(sasp, size)) == NULL) 629 if ((ptr = realloc(sasp, size)) == NULL)
630 {
631 freeaddrinfo(res);
627 return(TRAD_ENOMEM); 632 return(TRAD_ENOMEM);
633 };
628 sasp = ptr; 634 sasp = ptr;
629 trudp->trud_sockaddrs = ptr; 635 trudp->trud_sockaddrs = ptr;
630 sasp[sas_len+1] = NULL; 636 sasp[sas_len+1] = NULL;
631 637
632 if ((sasp[sas_len] = malloc(sizeof(struct sockaddr_storage))) == NULL) 638 if ((sasp[sas_len] = malloc(sizeof(struct sockaddr_storage))) == NULL)
639 {
640 freeaddrinfo(res);
633 return(TRAD_ENOMEM); 641 return(TRAD_ENOMEM);
642 };
634 memset(sasp[sas_len], 0, sizeof(struct sockaddr_storage)); 643 memset(sasp[sas_len], 0, sizeof(struct sockaddr_storage));
635 memcpy(sasp[sas_len], next->ai_addr, next->ai_addrlen); 644 memcpy(sasp[sas_len], next->ai_addr, next->ai_addrlen);
636 645