X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fextended.c;h=a8ca02b29ef469a8ebdb3df7387c5ee35520f735;hb=739466b85d6254ef84d83b7d4532dda518bd446d;hp=4f3f464562fefe8bc7ef1c92b5487af0c8d327cf;hpb=613bf0b077ee2afdd254f073b876098519643c00;p=openldap diff --git a/libraries/libldap/extended.c b/libraries/libldap/extended.c index 4f3f464562..a8ca02b29e 100644 --- a/libraries/libldap/extended.c +++ b/libraries/libldap/extended.c @@ -40,6 +40,7 @@ ldap_extended_operation( int *msgidp ) { BerElement *ber; + int rc; Debug( LDAP_DEBUG_TRACE, "ldap_extended_operation\n", 0, 0, 0 ); @@ -65,10 +66,19 @@ ldap_extended_operation( return( ld->ld_errno ); } - if ( ber_printf( ber, "{it{tstO}", /* '}' */ - ++ld->ld_msgid, LDAP_REQ_EXTENDED, LDAP_TAG_EXOP_REQ_OID, - reqoid, LDAP_TAG_EXOP_REQ_VALUE, reqdata ) == -1 ) - { + if ( reqdata != NULL ) { + rc = ber_printf( ber, "{it{tstO}", /* '}' */ + ++ld->ld_msgid, LDAP_REQ_EXTENDED, + LDAP_TAG_EXOP_REQ_OID, reqoid, + LDAP_TAG_EXOP_REQ_VALUE, reqdata ); + + } else { + rc = ber_printf( ber, "{it{ts}", /* '}' */ + ++ld->ld_msgid, LDAP_REQ_EXTENDED, + LDAP_TAG_EXOP_REQ_OID, reqoid ); + } + + if( rc == -1 ) { ld->ld_errno = LDAP_ENCODING_ERROR; ber_free( ber, 1 ); return( ld->ld_errno );