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

# ldap\_parse\_intermediate(3)

Parsing results

Part of [ldap\_parse\_result(3)](/ldap_parse_result/3.md).

## NAME

ldap\_parse\_result - Parsing results

## LIBRARY

OpenLDAP LDAP (libldap, -lldap)

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

**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)](/ldap_result/3.md), [**ldap\_search\_s**(3)](/ldap_search_s/3.md) **or** [**ldap\_search\_st**(3)](/ldap_search_st/3.md). **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)](/ldap_memfree/3.md).

**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)](/ldap_memfree/3.md).

**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)](/ldap_memvfree/3.md). **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)](/ldap_controls_free/3.md). **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)](/ldap_msgfree/3.md) **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)](/ber_bvfree/3.md).

**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)](/ldap_memfree/3.md). **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)](/ber_bvfree/3.md). **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

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

## SEE ALSO

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