From 613bf0b077ee2afdd254f073b876098519643c00 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Mon, 28 Jun 1999 22:17:38 +0000 Subject: [PATCH] Return LDAP_BAD_PARAM if res is not EXOP result. Skip over referrals that might exist in EXOP result. --- libraries/libldap/extended.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libraries/libldap/extended.c b/libraries/libldap/extended.c index e92d4d2578..4f3f464562 100644 --- a/libraries/libldap/extended.c +++ b/libraries/libldap/extended.c @@ -170,6 +170,11 @@ ldap_parse_extended_result ( return ld->ld_errno; } + if( res->lm_msgtype == LDAP_RES_EXTENDED ) { + ld->ld_errno = LDAP_PARAM_ERROR; + return ld->ld_errno; + } + if( retoidp != NULL ) *retoidp = NULL; if( retdatap != NULL ) *retdatap = NULL; @@ -199,6 +204,15 @@ ldap_parse_extended_result ( tag = ber_peek_tag( ber, &len ); + if( tag == LDAP_TAG_REFERRAL ) { + /* skip over referral */ + tag = ber_scanf( ber, "x" ); + + if( tag != LBER_ERROR ) { + tag = ber_peek_tag( ber, &len ); + } + } + if( tag == LDAP_TAG_EXOP_RES_OID ) { /* we have a resoid */ if( ber_scanf( ber, "a", &resoid ) == LBER_ERROR ) { -- 2.39.5