summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2014-05-31 19:06:56 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-06-03 14:46:17 +0200
commit8269d3c385ac1686f2dcf778827f04435f1ec4bf (patch)
treecf875dac5ad676d2cb5ecb16daa948d33a0b01f8 /src
parent973f2f3d0056f0150715db8b6c40a2eb5d964ea9 (diff)
downloadsssd-8269d3c385ac1686f2dcf778827f04435f1ec4bf.tar.gz
sssd-8269d3c385ac1686f2dcf778827f04435f1ec4bf.tar.xz
sssd-8269d3c385ac1686f2dcf778827f04435f1ec4bf.zip
Unify usage of function gethostname
man gethostanme says: NOTES SUSv2 guarantees that "Host names are limited to 255 bytes". POSIX.1-2001 guarantees that "Host names (not including the terminating null byte) are limited to HOST_NAME_MAX bytes". On Linux, HOST_NAME_MAX is defined with the value 64, which has been the limit since Linux 1.0 (earlier kernels imposed a limit of 8 bytes). Reviewed-by: Pavel Březina <pbrezina@redhat.com> (cherry picked from commit bf6f1b3d49e17b1adf0448c0b06e94b1e52ddffd)
Diffstat (limited to 'src')
-rw-r--r--src/providers/data_provider_fo.c4
-rw-r--r--src/providers/ldap/ldap_child.c6
-rw-r--r--src/providers/ldap/sdap_access.c5
-rw-r--r--src/resolv/async_resolv_utils.c4
4 files changed, 10 insertions, 9 deletions
diff --git a/src/providers/data_provider_fo.c b/src/providers/data_provider_fo.c
index 526ae58f1..7e2e50e6f 100644
--- a/src/providers/data_provider_fo.c
+++ b/src/providers/data_provider_fo.c
@@ -258,7 +258,7 @@ errno_t be_fo_set_dns_srv_lookup_plugin(struct be_ctx *be_ctx,
const char *hostname)
{
struct fo_resolve_srv_dns_ctx *srv_ctx = NULL;
- char resolved_hostname[HOST_NAME_MAX];
+ char resolved_hostname[HOST_NAME_MAX + 1];
errno_t ret;
if (hostname == NULL) {
@@ -269,7 +269,7 @@ errno_t be_fo_set_dns_srv_lookup_plugin(struct be_ctx *be_ctx,
"gethostname() failed: [%d]: %s\n", ret, strerror(ret));
return ret;
}
- resolved_hostname[HOST_NAME_MAX-1] = '\0';
+ resolved_hostname[HOST_NAME_MAX] = '\0';
hostname = resolved_hostname;
}
diff --git a/src/providers/ldap/ldap_child.c b/src/providers/ldap/ldap_child.c
index 34f23ec80..96404c4c8 100644
--- a/src/providers/ldap/ldap_child.c
+++ b/src/providers/ldap/ldap_child.c
@@ -229,14 +229,14 @@ static krb5_error_code ldap_child_get_tgt_sync(TALLOC_CTX *memctx,
full_princ = talloc_strdup(memctx, princ_str);
}
} else {
- char hostname[512];
+ char hostname[HOST_NAME_MAX + 1];
- ret = gethostname(hostname, 511);
+ ret = gethostname(hostname, HOST_NAME_MAX);
if (ret == -1) {
krberr = KRB5KRB_ERR_GENERIC;
goto done;
}
- hostname[511] = '\0';
+ hostname[HOST_NAME_MAX] = '\0';
DEBUG(SSSDBG_TRACE_LIBS, "got hostname: [%s]\n", hostname);
diff --git a/src/providers/ldap/sdap_access.c b/src/providers/ldap/sdap_access.c
index 4e1709028..486a08c85 100644
--- a/src/providers/ldap/sdap_access.c
+++ b/src/providers/ldap/sdap_access.c
@@ -1067,7 +1067,7 @@ static errno_t sdap_access_host(struct ldb_message *user_entry)
struct ldb_message_element *el;
unsigned int i;
char *host;
- char hostname[HOST_NAME_MAX+1];
+ char hostname[HOST_NAME_MAX + 1];
el = ldb_msg_find_element(user_entry, SYSDB_AUTHORIZED_HOST);
if (!el || el->num_values == 0) {
@@ -1075,11 +1075,12 @@ static errno_t sdap_access_host(struct ldb_message *user_entry)
return ERR_ACCESS_DENIED;
}
- if (gethostname(hostname, sizeof(hostname)) == -1) {
+ if (gethostname(hostname, HOST_NAME_MAX) == -1) {
DEBUG(SSSDBG_CRIT_FAILURE,
"Unable to get system hostname. Access denied\n");
return ERR_ACCESS_DENIED;
}
+ hostname[HOST_NAME_MAX] = '\0';
/* FIXME: PADL's pam_ldap also calls gethostbyname() on the hostname
* in some attempt to get aliases and/or FQDN for the machine.
diff --git a/src/resolv/async_resolv_utils.c b/src/resolv/async_resolv_utils.c
index b24ae603f..c5ae5f9d4 100644
--- a/src/resolv/async_resolv_utils.c
+++ b/src/resolv/async_resolv_utils.c
@@ -44,7 +44,7 @@ resolv_get_domain_send(TALLOC_CTX *mem_ctx,
struct resolv_get_domain_state *state = NULL;
struct tevent_req *req = NULL;
struct tevent_req *subreq = NULL;
- char system_hostname[HOST_NAME_MAX];
+ char system_hostname[HOST_NAME_MAX + 1];
errno_t ret;
req = tevent_req_create(mem_ctx, &state,
@@ -63,7 +63,7 @@ resolv_get_domain_send(TALLOC_CTX *mem_ctx,
ret, strerror(ret));
goto immediately;
}
- system_hostname[HOST_NAME_MAX-1] = '\0';
+ system_hostname[HOST_NAME_MAX] = '\0';
hostname = system_hostname;
}