LDAP\_GET\_VALUES(3) Library Functions Manual LDAP\_GET\_VALUES(3)

# [NAME](#NAME)

ldap\_get\_values, ldap\_get\_values\_len, ldap\_count\_values - LDAP attribute value handling routines

# [LIBRARY](#LIBRARY)

OpenLDAP LDAP (libldap, -lldap)

# [SYNOPSIS](#SYNOPSIS)

```
#include <ldap.h>
```

```
char **ldap_get_values(ld, entry, attr)
LDAP *ld;
LDAPMessage *entry;
char *attr;
```

```
struct berval **ldap_get_values_len(ld, entry, attr)
LDAP *ld;
LDAPMessage *entry;
char *attr;
```

```
int ldap_count_values(vals)
char **vals;
```

```
int ldap_count_values_len(vals)
struct berval **vals;
```

```
void ldap_value_free(vals)
char **vals;
```

```
void ldap_value_free_len(vals)
struct berval **vals;
```

# [DESCRIPTION](#DESCRIPTION)

These routines are used to retrieve and manipulate attribute values from an LDAP entry as returned by [**ldap\_first\_entry**(3)](/man/enterprise-packages/openldap-2.5/ldap_first_entry.3) or [**ldap\_next\_entry**(3)](/man/enterprise-packages/openldap-2.5/ldap_next_entry.3). **ldap\_get\_values()** takes the *entry* and the attribute *attr* whose values are desired and returns a NULL-terminated array of the attribute's values. *attr* may be an attribute type as returned from [**ldap\_first\_attribute**(3)](/man/enterprise-packages/openldap-2.5/ldap_first_attribute.3) or [**ldap\_next\_attribute**(3)](/man/enterprise-packages/openldap-2.5/ldap_next_attribute.3), or if the attribute type is known it can simply be given.

The number of values in the array can be counted by calling **ldap\_count\_values()**. The array of values returned can be freed by calling **ldap\_value\_free()**.

If the attribute values are binary in nature, and thus not suitable to be returned as an array of char \*'s, the **ldap\_get\_values\_len()** routine can be used instead. It takes the same parameters as **ldap\_get\_values()**, but returns a NULL-terminated array of pointers to berval structures, each containing the length of and a pointer to a value.

The number of values in the array can be counted by calling **ldap\_count\_values\_len()**. The array of values returned can be freed by calling **ldap\_value\_free\_len()**.

# [ERRORS](#ERRORS)

If an error occurs in **ldap\_get\_values()** or **ldap\_get\_values\_len()**, NULL is returned and the **ld\_errno** field in the *ld* parameter is set to indicate the error. See [**ldap\_error**(3)](/man/enterprise-packages/openldap-2.5/ldap_error.3) for a description of possible error codes.

# [NOTES](#NOTES)

These routines dynamically allocate memory which the caller must free using the supplied routines.

# [SEE ALSO](#SEE_ALSO)

[**ldap**(3)](/man/enterprise-packages/openldap-2.5/ldap.3), [**ldap\_first\_entry**(3)](/man/enterprise-packages/openldap-2.5/ldap_first_entry.3), [**ldap\_first\_attribute**(3)](/man/enterprise-packages/openldap-2.5/ldap_first_attribute.3), [**ldap\_error**(3)](/man/enterprise-packages/openldap-2.5/ldap_error.3)

# [ACKNOWLEDGEMENTS](#ACKNOWLEDGEMENTS)

**OpenLDAP Software** is developed and maintained by The OpenLDAP Project &lt;http://www.openldap.org/&gt;. **OpenLDAP Software** is derived from the University of Michigan LDAP 3.3 Release.

2025/05/22 OpenLDAP 2.5.20

---

Document: ldap_get_values(3) from openldap-2.5 2.5.20-r7 (Chainguard OS)
Source: https://git.openldap.org/openldap/openldap.git
