diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2013-01-12 22:33:00 +0000 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2013-01-12 22:33:00 +0000 |
commit | 82b31fea5e8c3cac0e1ba435dc702765246b38f9 (patch) | |
tree | 28f4b4b1a48ad86b37bcb40c9dd175aa4b881d5c /nslcd/myldap.c | |
parent | 388821aaf7ed45acdc47f7b1514bd76509bee627 (diff) |
have myldap_get_ranged_values() return a list of values instead of a set
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1912 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nslcd/myldap.c')
-rw-r--r-- | nslcd/myldap.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/nslcd/myldap.c b/nslcd/myldap.c index 3e60046..19407bf 100644 --- a/nslcd/myldap.c +++ b/nslcd/myldap.c @@ -1410,7 +1410,7 @@ char *myldap_cpy_dn(MYLDAP_ENTRY *entry, char *buf, size_t buflen) /* Perform ranged retreival of attributes. http://msdn.microsoft.com/en-us/library/aa367017(vs.85).aspx http://www.tkk.fi/cc/docs/kerberos/draft-kashi-incremental-00.txt */ -static SET *myldap_get_ranged_values(MYLDAP_ENTRY *entry, const char *attr) +static char **myldap_get_ranged_values(MYLDAP_ENTRY *entry, const char *attr) { char **values; char *attn; @@ -1491,7 +1491,13 @@ static SET *myldap_get_ranged_values(MYLDAP_ENTRY *entry, const char *attr) if (search != NULL) myldap_search_close(search); /* return the contents of the set as a list */ - return set; + if (set == NULL) + return NULL; + values = (char **)set_tolist(set); + set_free(set); + if (values == NULL) + log_log(LOG_CRIT, "myldap_get_ranged_values(): malloc() failed to allocate memory"); + return values; } /* Simple wrapper around ldap_get_values(). */ @@ -1500,7 +1506,6 @@ const char **myldap_get_values(MYLDAP_ENTRY *entry, const char *attr) char **values; int rc; int i; - SET *set; /* check parameters */ if (!is_valid_entry(entry)) { @@ -1533,20 +1538,19 @@ const char **myldap_get_values(MYLDAP_ENTRY *entry, const char *attr) { /* we have a success code but no values, let's try to get ranged values */ - set = myldap_get_ranged_values(entry, attr); - if (set == NULL) + values = myldap_get_ranged_values(entry, attr); + if (values == NULL) return NULL; /* store values entry so we can free it later on */ for (i = 0; i < MAX_RANGED_ATTRIBUTES_PER_ENTRY; i++) if (entry->rangedattributevalues[i] == NULL) { - entry->rangedattributevalues[i] = (char **)set_tolist(set); - set_free(set); + entry->rangedattributevalues[i] = values; return (const char **)entry->rangedattributevalues[i]; } /* we found no room to store the values */ log_log(LOG_ERR, "ldap_get_values() couldn't store results, increase MAX_RANGED_ATTRIBUTES_PER_ENTRY"); - set_free(set); + free(values); return NULL; } else @@ -1610,7 +1614,6 @@ const char **myldap_get_values_len(MYLDAP_ENTRY *entry, const char *attr) struct berval **bvalues; int rc; int i; - SET *set; /* check parameters */ if (!is_valid_entry(entry)) { @@ -1644,16 +1647,7 @@ const char **myldap_get_values_len(MYLDAP_ENTRY *entry, const char *attr) { /* we have a success code but no values, let's try to get ranged values */ - set = myldap_get_ranged_values(entry, attr); - if (set == NULL) - return NULL; - values = set_tolist(set); - set_free(set); - if (values == NULL) - { - log_log(LOG_CRIT, "myldap_get_values_len(): malloc() failed to allocate memory"); - return NULL; - } + values = (const char **)myldap_get_ranged_values(entry, attr); } else { |