Changeset View
Changeset View
Standalone View
Standalone View
lib/libcasper/services/cap_dns/cap_dns.c
Show First 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | hostent_unpack(const nvlist_t *nvl, struct hostent *hp) | ||||
hp->h_name = strdup(nvlist_get_string(nvl, "name")); | hp->h_name = strdup(nvlist_get_string(nvl, "name")); | ||||
if (hp->h_name == NULL) | if (hp->h_name == NULL) | ||||
goto fail; | goto fail; | ||||
hp->h_addrtype = (int)nvlist_get_number(nvl, "addrtype"); | hp->h_addrtype = (int)nvlist_get_number(nvl, "addrtype"); | ||||
hp->h_length = (int)nvlist_get_number(nvl, "length"); | hp->h_length = (int)nvlist_get_number(nvl, "length"); | ||||
nitems = (unsigned int)nvlist_get_number(nvl, "naliases"); | nitems = (unsigned int)nvlist_get_number(nvl, "naliases"); | ||||
hp->h_aliases = calloc(sizeof(hp->h_aliases[0]), nitems + 1); | hp->h_aliases = calloc(nitems + 1, sizeof(hp->h_aliases[0])); | ||||
if (hp->h_aliases == NULL) | if (hp->h_aliases == NULL) | ||||
goto fail; | goto fail; | ||||
for (ii = 0; ii < nitems; ii++) { | for (ii = 0; ii < nitems; ii++) { | ||||
n = snprintf(nvlname, sizeof(nvlname), "alias%u", ii); | n = snprintf(nvlname, sizeof(nvlname), "alias%u", ii); | ||||
assert(n > 0 && n < (int)sizeof(nvlname)); | assert(n > 0 && n < (int)sizeof(nvlname)); | ||||
hp->h_aliases[ii] = | hp->h_aliases[ii] = | ||||
strdup(nvlist_get_string(nvl, nvlname)); | strdup(nvlist_get_string(nvl, nvlname)); | ||||
if (hp->h_aliases[ii] == NULL) | if (hp->h_aliases[ii] == NULL) | ||||
goto fail; | goto fail; | ||||
} | } | ||||
hp->h_aliases[ii] = NULL; | hp->h_aliases[ii] = NULL; | ||||
nitems = (unsigned int)nvlist_get_number(nvl, "naddrs"); | nitems = (unsigned int)nvlist_get_number(nvl, "naddrs"); | ||||
hp->h_addr_list = calloc(sizeof(hp->h_addr_list[0]), nitems + 1); | hp->h_addr_list = calloc(nitems + 1, sizeof(hp->h_addr_list[0])); | ||||
if (hp->h_addr_list == NULL) | if (hp->h_addr_list == NULL) | ||||
goto fail; | goto fail; | ||||
for (ii = 0; ii < nitems; ii++) { | for (ii = 0; ii < nitems; ii++) { | ||||
hp->h_addr_list[ii] = malloc(hp->h_length); | hp->h_addr_list[ii] = malloc(hp->h_length); | ||||
if (hp->h_addr_list[ii] == NULL) | if (hp->h_addr_list[ii] == NULL) | ||||
goto fail; | goto fail; | ||||
n = snprintf(nvlname, sizeof(nvlname), "addr%u", ii); | n = snprintf(nvlname, sizeof(nvlname), "addr%u", ii); | ||||
assert(n > 0 && n < (int)sizeof(nvlname)); | assert(n > 0 && n < (int)sizeof(nvlname)); | ||||
▲ Show 20 Lines • Show All 658 Lines • Show Last 20 Lines |