15042 AD join fails if hostname longer than 14 characters
Reviewed by: Matt Barden <mbarden@tintri.com>
Reviewed by: Andrew Stormont <andyjstormont@gmail.com>
Approved by: Dan McDonald <danmcd@mnx.io>
diff --git a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c
index 02b9d3c..0a07771 100644
--- a/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c
+++ b/usr/src/lib/smbsrv/libsmbns/common/smbns_ads.c
@@ -1599,7 +1599,8 @@
 {
 	char *attrs[3], filter[SMB_ADS_MAXBUFLEN];
 	LDAPMessage *res;
-	char sam_acct[SMB_SAMACCT_MAXLEN], sam_acct2[SMB_SAMACCT_MAXLEN];
+	char sam_acct[SMB_SAMACCT_MAXLEN];
+	char tmpbuf[SMB_ADS_MAXBUFLEN];
 	smb_ads_qstat_t rc;
 	int err;
 
@@ -1618,12 +1619,12 @@
 		attrs[1] = avpair->avp_attr;
 	}
 
-	if (smb_ads_escape_search_filter_chars(sam_acct, sam_acct2) != 0)
+	if (smb_ads_escape_search_filter_chars(sam_acct, tmpbuf) != 0)
 		return (SMB_ADS_STAT_ERR);
 
 	(void) snprintf(filter, sizeof (filter),
-	    "(&(objectClass=computer)(%s=%s))", SMB_ADS_ATTR_SAMACCT,
-	    sam_acct2);
+	    "(&(objectClass=computer)(%s=%s))",
+	    SMB_ADS_ATTR_SAMACCT, tmpbuf);
 
 	syslog(LOG_DEBUG, "smbns: lookup_computer, "
 	    "dn=%s, scope=%d", dn, scope);