From: Kurt Zeilenga Date: Mon, 28 Jun 1999 22:17:38 +0000 (+0000) Subject: Return LDAP_BAD_PARAM if res is not EXOP result. X-Git-Tag: OPENLDAP_REL_ENG_2_BP~233 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=613bf0b077ee2afdd254f073b876098519643c00;p=openldap Return LDAP_BAD_PARAM if res is not EXOP result. Skip over referrals that might exist in EXOP result. --- 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 ) {