chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
shared: rename PROTO_ADDRESS_SIZE() to FAMILY_ADDRESS_SIZE()
[elogind.git]
/
src
/
nss-myhostname
/
nss-myhostname.c
diff --git
a/src/nss-myhostname/nss-myhostname.c
b/src/nss-myhostname/nss-myhostname.c
index 06bd842fc61bfd70b7b9dc225af8f2ae604b5aec..6fa6790f529dec31b1282d425e94bd5786037203 100644
(file)
--- a/
src/nss-myhostname/nss-myhostname.c
+++ b/
src/nss-myhostname/nss-myhostname.c
@@
-184,9
+184,8
@@
static enum nss_status fill_in_hostent(
int32_t *ttlp,
char **canonp) {
int32_t *ttlp,
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;
unsigned n, c;
struct local_address *a;
unsigned n, c;
@@
-196,7
+195,7
@@
static enum nss_status fill_in_hostent(
assert(errnop);
assert(h_errnop);
assert(errnop);
assert(h_errnop);
- alen =
PROTO
_ADDRESS_SIZE(af);
+ alen =
FAMILY
_ADDRESS_SIZE(af);
for (a = addresses, n = 0, c = 0; n < n_addresses; a++, n++)
if (af == a->family)
for (a = addresses, n = 0, c = 0; n < n_addresses; a++, n++)
if (af == a->family)
@@
-208,7
+207,7
@@
static enum nss_status fill_in_hostent(
(additional ? ALIGN(l_additional+1) : 0) +
sizeof(char*) +
(additional ? sizeof(char*) : 0) +
(additional ? ALIGN(l_additional+1) : 0) +
sizeof(char*) +
(additional ? sizeof(char*) : 0) +
- (c > 0 ? c : 1) * ALIGN(alen)+
+ (c > 0 ? c : 1) * ALIGN(alen)
+
(c > 0 ? c+1 : 2) * sizeof(char*);
if (buflen < ms) {
(c > 0 ? c+1 : 2) * sizeof(char*);
if (buflen < ms) {
@@
-266,24
+265,18
@@
static enum nss_status fill_in_hostent(
/* Fourth, add address pointer array */
r_addr_list = buffer + idx;
if (c > 0) {
/* Fourth, add address pointer array */
r_addr_list = buffer + idx;
if (c > 0) {
- unsigned i = 0;
-
- for (a = addresses, n = 0; n < n_addresses; a++, n++) {
- if (af != a->family)
- continue;
+ unsigned i;
- ((char**) r_addr_list)[i] = (r_addr + i*ALIGN(alen));
- i++;
- }
+ for (i = 0; i < c; i++)
+ ((char**) r_addr_list)[i] = r_addr + i*ALIGN(alen);
- assert(i == c);
- ((char**) r_addr_list)[c] = NULL;
- idx += (c+1)*sizeof(char*);
+ ((char**) r_addr_list)[i] = NULL;
+ idx += (c+1) * sizeof(char*);
} else {
((char**) r_addr_list)[0] = r_addr;
((char**) r_addr_list)[1] = NULL;
} else {
((char**) r_addr_list)[0] = r_addr;
((char**) r_addr_list)[1] = NULL;
- idx += 2
*
sizeof(char*);
+ idx += 2
*
sizeof(char*);
}
/* Verify the size matches */
}
/* Verify the size matches */
@@
-394,7
+387,13
@@
enum nss_status _nss_myhostname_gethostbyaddr2_r(
assert(errnop);
assert(h_errnop);
assert(errnop);
assert(h_errnop);
- if (len != PROTO_ADDRESS_SIZE(af)) {
+ if (!IN_SET(af, AF_INET, AF_INET6)) {
+ *errnop = EAFNOSUPPORT;
+ *h_errnop = NO_DATA;
+ return NSS_STATUS_UNAVAIL;
+ }
+
+ if (len != FAMILY_ADDRESS_SIZE(af)) {
*errnop = EINVAL;
*h_errnop = NO_RECOVERY;
return NSS_STATUS_UNAVAIL;
*errnop = EINVAL;
*h_errnop = NO_RECOVERY;
return NSS_STATUS_UNAVAIL;
@@
-411,17
+410,14
@@
enum nss_status _nss_myhostname_gethostbyaddr2_r(
goto found;
}
goto found;
}
- } else if (af == AF_INET6) {
+ } else {
+ assert(af == AF_INET6);
if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) {
additional = "localhost";
goto found;
}
if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) {
additional = "localhost";
goto found;
}
- } else {
- *errnop = EAFNOSUPPORT;
- *h_errnop = NO_DATA;
- return NSS_STATUS_UNAVAIL;
}
n_addresses = local_addresses(&addresses);
}
n_addresses = local_addresses(&addresses);
@@
-432,7
+428,7
@@
enum nss_status _nss_myhostname_gethostbyaddr2_r(
if (af != a->family)
continue;
if (af != a->family)
continue;
- if (memcmp(addr, &a->address,
PROTO
_ADDRESS_SIZE(af)) == 0)
+ if (memcmp(addr, &a->address,
FAMILY
_ADDRESS_SIZE(af)) == 0)
goto found;
}
goto found;
}