int n;
LDAP_SEARCH(subtree[i],
- LDAP_SCOPE_SUB,
+ LDAP_SCOPE_SUBTREE,
filter,
refcntattr);
n = ldap_count_entries (ld, result);
goto cleanup;
}
+#if defined HAVE_LDAP_STR2DN
{
char *rdn;
LDAPDN dn;
st = EINVAL;
else if (strcasecmp (dn[0][0]->la_attr.bv_val, "cn") != 0)
st = EINVAL;
- else
+ else {
*name = strndup(dn[0][0]->la_value.bv_val, dn[0][0]->la_value.bv_len);
+ if (*name == NULL)
+ st = EINVAL;
+ }
ldap_memfree (dn);
}
+#elif defined HAVE_LDAP_EXPLODE_DN
+ {
+ char *parsed_dn;
+
+ parsed_dn = ldap_explode_dn(policy_dn, 0);
+ if (parsed_dn == NULL) {
+ st = EINVAL;
+ }
+ else {
+ if (strncasecmp(parsed_dn[0], "cn=", 3) != 0) {
+ st = EINVAL;
+ }
+ else {
+ *name = strdup(parsed_dn[0]);
+ if (*name == NULL)
+ st = EINVAL;
+ }
+
+ ldap_value_free(parsed_dn);
+ }
+ }
+#else
+ st = EINVAL;
+#endif
+
cleanup:
return st;
}
if (key_data[i].key_data_kvno != key_data[i + 1].key_data_kvno)
num_versions++;
- ret = (struct berval **) malloc (num_versions * sizeof (struct berval *) + 1);
+ ret = (struct berval **) malloc ((num_versions + 1) * sizeof (struct berval *));
for (i = 0, last = 0, j = 0, currkvno = key_data[0].key_data_kvno; i < n_key_data; i++) {
krb5_data *code;
if (i == n_key_data - 1 || key_data[i + 1].key_data_kvno != currkvno) {
}
if (count != 0) {
int j;
- ber_tl_data = (struct berval **) calloc (count, sizeof (struct
- berval*));
+ ber_tl_data = (struct berval **) calloc (count + 1,
+ sizeof (struct berval*));
for (j = 0, ptr = entries->tl_data; ptr != NULL; ptr = ptr->tl_data_next) {
/* Ignore tl_data that are stored in separate directory
* attributes */
free (ber_tl_data);
goto cleanup;
}
+ ber_tl_data[count] = NULL;
if ((st=krb5_add_ber_mem_ldap_mod(&mods, "krbExtraData",
LDAP_MOD_REPLACE | LDAP_MOD_BVALUES,
ber_tl_data)) != 0)