---
name: "ldap_first_attribute"
section: "3"
platform: "macos"
package: "OpenLDAP"
version: "561"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/ldap_first_attribute"
---

# ldap\_first\_attribute(3)

step through LDAP entry attributes

## NAME

ldap\_first\_attribute, ldap\_next\_attribute - step through LDAP entry attributes

## LIBRARY

OpenLDAP LDAP (libldap, -lldap)

## SYNOPSIS

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

**char \*ldap\_first\_attribute(**\
 	**LDAP \*ld, LDAPMessage \*entry, BerElement \*\*berptr )**

**char \*ldap\_next\_attribute(**\
 	**LDAP \*ld, LDAPMessage \*entry, BerElement \*ber )**

## DESCRIPTION

**The** **ldap\_first\_attribute()** **and** **ldap\_next\_attribute()** **routines are used** **to step through the attributes in an LDAP entry.** **ldap\_first\_attribute()** **takes an** *entry* **as returned by** [**ldap\_first\_entry**(3)](/ldap_first_entry/3.md) **or** [**ldap\_next\_entry**(3)](/ldap_next_entry/3.md) **and returns a pointer to character string** **containing the first attribute description in the entry.** **ldap\_next\_attribute()** **returns the next attribute description in the entry.**

**It also returns, in** *berptr***, a pointer to a BerElement it has** **allocated to keep track of its current position.  This pointer should** **be passed to subsequent calls to** **ldap\_next\_attribute()** **and is used** **to effectively step through the entry's attributes.  The caller is** **solely responsible for freeing the BerElement pointed to by** *berptr* **when it is no longer needed by calling** [**ber\_free**(3)](/ber_free/3.md). **When calling** [**ber\_free**(3)](/ber_free/3.md) **in this instance, be sure the second argument is 0.**

**The attribute names returned are suitable for inclusion in a call** **to** [**ldap\_get\_values**(3)](/ldap_get_values/3.md) **to retrieve the attribute's values.**

## ERRORS

**If an error occurs, 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

**The** **ldap\_first\_attribute()** **and** **ldap\_next\_attribute()** **return dynamically allocated memory that must be freed by the caller via** [**ldap\_memfree**(3)](/ldap_memfree/3.md).

## SEE ALSO

[**ldap**(3)](/ldap/3.md), [**ldap\_first\_entry**(3)](/ldap_first_entry/3.md), [**ldap\_get\_values**(3)](/ldap_get_values/3.md), [**ldap\_error**(3)](/ldap_error/3.md)

## ACKNOWLEDGEMENTS
