} else if (allow_remote && dnsHostName) {
principal_fmt = "ldap/%s";
- svc_principal_size = strlen(dnsHostName) + strlen(principal_fmt);
+ svc_principal_size = STRLENOF("ldap/") + strlen(dnsHostName) + 1;
str = dnsHostName;
} else {
principal_fmt = "ldap/%s";
- svc_principal_size = strlen(host) + strlen(principal_fmt);
+ svc_principal_size = STRLENOF("ldap/") + strlen(host) + 1;
str = host;
}
return ld->ld_errno;
}
- ret = snprintf( svc_principal, svc_principal_size - 1, principal_fmt, str);
- if (ret < 0 || (size_t)ret + 1 >= svc_principal_size) {
+ ret = snprintf( svc_principal, svc_principal_size, principal_fmt, str );
+ if (ret < 0 || (size_t)ret >= svc_principal_size) {
ld->ld_errno = LDAP_LOCAL_ERROR;
return ld->ld_errno;
}
host, svc_principal, 0 );
input_name.value = svc_principal;
- input_name.length = strlen( svc_principal );
+ input_name.length = (size_t)ret;
gss_rc = gss_import_name( &minor_status, &input_name, &nt_principal, principal );
ldap_memfree( svc_principal );