nss-myhostname: simplify array building a bit
This commit is contained in:
parent
d77ab3f7e3
commit
d4c9895d93
|
@ -184,9 +184,8 @@ static enum nss_status fill_in_hostent(
|
||||||
int32_t *ttlp,
|
int32_t *ttlp,
|
||||||
char **canonp) {
|
char **canonp) {
|
||||||
|
|
||||||
size_t l_canonical, l_additional, idx, ms;
|
size_t l_canonical, l_additional, idx, ms, alen;
|
||||||
char *r_addr, *r_name, *r_aliases, *r_alias = NULL, *r_addr_list;
|
char *r_addr, *r_name, *r_aliases, *r_alias = NULL, *r_addr_list;
|
||||||
size_t alen;
|
|
||||||
struct local_address *a;
|
struct local_address *a;
|
||||||
unsigned n, c;
|
unsigned n, c;
|
||||||
|
|
||||||
|
@ -208,7 +207,7 @@ static enum nss_status fill_in_hostent(
|
||||||
(additional ? ALIGN(l_additional+1) : 0) +
|
(additional ? ALIGN(l_additional+1) : 0) +
|
||||||
sizeof(char*) +
|
sizeof(char*) +
|
||||||
(additional ? sizeof(char*) : 0) +
|
(additional ? sizeof(char*) : 0) +
|
||||||
(c > 0 ? c : 1) * ALIGN(alen)+
|
(c > 0 ? c : 1) * ALIGN(alen) +
|
||||||
(c > 0 ? c+1 : 2) * sizeof(char*);
|
(c > 0 ? c+1 : 2) * sizeof(char*);
|
||||||
|
|
||||||
if (buflen < ms) {
|
if (buflen < ms) {
|
||||||
|
@ -266,24 +265,18 @@ static enum nss_status fill_in_hostent(
|
||||||
/* Fourth, add address pointer array */
|
/* Fourth, add address pointer array */
|
||||||
r_addr_list = buffer + idx;
|
r_addr_list = buffer + idx;
|
||||||
if (c > 0) {
|
if (c > 0) {
|
||||||
unsigned i = 0;
|
unsigned i;
|
||||||
|
|
||||||
for (a = addresses, n = 0; n < n_addresses; a++, n++) {
|
for (i = 0; i < c; i++)
|
||||||
if (af != a->family)
|
((char**) r_addr_list)[i] = r_addr + i*ALIGN(alen);
|
||||||
continue;
|
|
||||||
|
|
||||||
((char**) r_addr_list)[i] = (r_addr + i*ALIGN(alen));
|
((char**) r_addr_list)[i] = NULL;
|
||||||
i++;
|
idx += (c+1) * sizeof(char*);
|
||||||
}
|
|
||||||
|
|
||||||
assert(i == c);
|
|
||||||
((char**) r_addr_list)[c] = NULL;
|
|
||||||
idx += (c+1)*sizeof(char*);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
((char**) r_addr_list)[0] = r_addr;
|
((char**) r_addr_list)[0] = r_addr;
|
||||||
((char**) r_addr_list)[1] = NULL;
|
((char**) r_addr_list)[1] = NULL;
|
||||||
idx += 2*sizeof(char*);
|
idx += 2 * sizeof(char*);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Verify the size matches */
|
/* Verify the size matches */
|
||||||
|
|
Loading…
Reference in a new issue