summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Babej <tbabej@redhat.com>2013-11-26 12:14:39 +0100
committerMartin Kosek <mkosek@redhat.com>2013-12-11 13:23:46 +0100
commit313f2e76355b4da4db7448b0b0cedc825d39db9f (patch)
tree6e56b1a6e35f2da33e40e66806f63801cd0ede77
parent5640049f7aa132ab73099db856b352c3413489bb (diff)
downloadfreeipa.git-313f2e76355b4da4db7448b0b0cedc825d39db9f.tar.gz
freeipa.git-313f2e76355b4da4db7448b0b0cedc825d39db9f.tar.xz
freeipa.git-313f2e76355b4da4db7448b0b0cedc825d39db9f.zip
ipa-cldap: Cut NetBIOS name after 15 characters
The CLDAP DS plugin uses the uppercased first segment of the fully qualified hostname as the NetBIOS name. We need to limit its size to 15 characters. https://fedorahosted.org/freeipa/ticket/4028
-rw-r--r--daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.h1
-rw-r--r--daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_netlogon.c6
2 files changed, 6 insertions, 1 deletions
diff --git a/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.h b/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.h
index 7b0c2aad..3f420ff2 100644
--- a/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.h
+++ b/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap.h
@@ -59,6 +59,7 @@
#define IPA_PLUGIN_NAME IPA_CLDAP_PLUGIN_NAME
#define CLDAP_PORT 389
#define MAX_DG_SIZE 4096
+#define NETBIOS_NAME_MAX 15
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
diff --git a/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_netlogon.c b/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_netlogon.c
index 7d29fe55..9ba05829 100644
--- a/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_netlogon.c
+++ b/daemons/ipa-slapi-plugins/ipa-cldap/ipa_cldap_netlogon.c
@@ -161,8 +161,12 @@ static int ipa_cldap_encode_netlogon(char *fq_hostname, char *domain,
nlr->dns_domain = domain;
nlr->pdc_dns_name = fq_hostname;
nlr->domain_name = name;
- pdc_name = talloc_asprintf(nlr, "\\\\%s", fq_hostname);
+
+ /* copy the first 15 characters of the fully qualified hostname*/
+ pdc_name = talloc_asprintf(nlr, "\\\\%.*s", NETBIOS_NAME_MAX, fq_hostname);
+
for (p = pdc_name; *p; p++) {
+ /* Create the NetBIOS name from the first segment of the hostname */
if (*p == '.') {
*p = '\0';
break;