LDAP\_PARSE\_RESULT(3) Library Functions Manual LDAP\_PARSE\_RESULT(3)

# [NAME](#NAME)

ldap\_parse\_result - Parsing results

# [LIBRARY](#LIBRARY)

OpenLDAP LDAP (libldap, -lldap)

# [SYNOPSIS](#SYNOPSIS)

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

```
int ldap_parse_result( LDAP *ld, LDAPMessage *result,
	int *errcodep, char **matcheddnp, char **errmsgp,
	char ***referralsp, LDAPControl ***serverctrlsp,
	int freeit )
```

```
int ldap_parse_sasl_bind_result( LDAP *ld, LDAPMessage *result,
	struct berval **servercredp, int freeit )
```

```
int ldap_parse_extended_result( LDAP *ld, LDAPMessage *result,
	char **retoidp, struct berval **retdatap, int freeit )
```

```
int ldap_parse_intermediate( LDAP *ld, LDAPMessage *result,
	char **retoidp, struct berval **retdatap,
	LDAPControl ***serverctrlsp, int freeit )
```

# [DESCRIPTION](#DESCRIPTION)

These routines are used to extract information from a result message. They will operate on the first result message in a chain of search results (skipping past other message types). They take the *result* as returned by a call to [**ldap\_result**(3)](/man/enterprise-packages/openldap-2.6/ldap_result.3), [**ldap\_search\_s**(3)](/man/enterprise-packages/openldap-2.6/ldap_search_s.3) or [**ldap\_search\_st**(3)](/man/enterprise-packages/openldap-2.6/ldap_search_st.3). In addition to **ldap\_parse\_result()**, the routines **ldap\_parse\_sasl\_bind\_result()** and **ldap\_parse\_extended\_result()** are used to get all the result information from SASL bind and extended operations. To extract information from intermediate responses, **ldap\_parse\_intermediate()** can be used.

The *errcodep* parameter will be filled in with the result code from the result message.

The server might supply a matched DN string in the message indicating how much of a name in a request was recognized. The *matcheddnp* parameter will be filled in with this string if supplied, else it will be NULL. If a string is returned, it should be freed using [**ldap\_memfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_memfree.3).

The *errmsgp* parameter will be filled in with the error message field from the parsed message. This string should be freed using [**ldap\_memfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_memfree.3).

The *referralsp* parameter will be filled in with an allocated array of referral strings from the parsed message. This array should be freed using [**ldap\_memvfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_memvfree.3). If no referrals were returned, *\*referralsp* is set to NULL.

The *serverctrlsp* parameter will be filled in with an allocated array of controls copied from the parsed message. The array should be freed using [**ldap\_controls\_free**(3)](/man/enterprise-packages/openldap-2.6/ldap_controls_free.3). If no controls were returned, *\*serverctrlsp* is set to NULL.

The *freeit* parameter determines whether the parsed message is freed or not after the extraction. Any non-zero value will make it free the message. The [**ldap\_msgfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_msgfree.3) routine can also be used to free the message later.

For SASL bind results, the *servercredp* parameter will be filled in with an allocated berval structure containing the credentials from the server if present. The structure should be freed using [**ber\_bvfree**(3)](/man/enterprise-packages/openldap-2.6/ber_bvfree.3).

For extended results and intermediate responses, the *retoidp* parameter will be filled in with the dotted-OID text representation of the name of the extended operation response. The string should be freed using [**ldap\_memfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_memfree.3). If no OID was returned, *\*retoidp* is set to NULL.

For extended results and intermediate responses, the *retdatap* parameter will be filled in with a pointer to a berval structure containing the data from the extended operation response. The structure should be freed using [**ber\_bvfree**(3)](/man/enterprise-packages/openldap-2.6/ber_bvfree.3). If no data were returned, *\*retdatap* is set to NULL.

For all the above result parameters, NULL values can be used in calls in order to ignore certain fields.

# [ERRORS](#ERRORS)

Upon success LDAP\_SUCCESS is returned. Otherwise the values of the result parameters are undefined.

# [SEE ALSO](#SEE_ALSO)

[**ldap**(3)](/man/enterprise-packages/openldap-2.6/ldap.3), [**ldap\_result**(3)](/man/enterprise-packages/openldap-2.6/ldap_result.3), [**ldap\_search**(3)](/man/enterprise-packages/openldap-2.6/ldap_search.3), [**ldap\_memfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_memfree.3), [**ldap\_memvfree**(3)](/man/enterprise-packages/openldap-2.6/ldap_memvfree.3), [**ldap\_get\_values**(3)](/man/enterprise-packages/openldap-2.6/ldap_get_values.3), [**ldap\_controls\_free**(3)](/man/enterprise-packages/openldap-2.6/ldap_controls_free.3), [**lber-types**(3)](/man/enterprise-packages/openldap-2.6/lber-types.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.

2026/10/21 OpenLDAP 2.6.16

---

Document: ldap_parse_sasl_bind_result(3) from openldap-2.6 2.6.16-r1 (Chainguard OS)
Source: https://git.openldap.org/openldap/openldap.git
