---
name: "ldap_get_values"
section: "3"
platform: "linux"
package: "libldap"
version: "2.7.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/ldap_get_values"
---

# ldap\_get\_values(3)

LDAP attribute value handling routines

## NAME

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

## LIBRARY

OpenLDAP LDAP (libldap, -lldap)

## 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

**These routines are used to retrieve and manipulate attribute values** **from an LDAP entry as returned by** [**ldap\_first\_entry**(3)](/ldap_first_entry/3.md) **or** [**ldap\_next\_entry**(3)](/ldap_next_entry/3.md). **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)](/ldap_first_attribute/3.md) **or** [**ldap\_next\_attribute**(3)](/ldap_next_attribute/3.md), **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

**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)](/ldap_error/3.md) **for a description of possible error codes.**

## NOTES

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

## SEE ALSO

[**ldap**(3)](/ldap/3.md), [**ldap\_first\_entry**(3)](/ldap_first_entry/3.md), [**ldap\_first\_attribute**(3)](/ldap_first_attribute/3.md), [**ldap\_error**(3)](/ldap_error/3.md)

## ACKNOWLEDGEMENTS

**OpenLDAP Software** **is developed and maintained by The OpenLDAP Project \<http://www.openldap.org/\>.** **OpenLDAP Software** **is derived from the University of Michigan LDAP 3.3 Release.**
