X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fsortctrl.c;h=05c66eec099f75aaab2e79bdb306df9857703ea4;hb=3d39ff68a94e4455074707d763138f01aaa1c5b1;hp=b4e1f8591ed78ec958cce7ae160e05aef1b7692b;hpb=2d4da0b23ccec61d3470ad9ed0b1f01f6699ab58;p=openldap diff --git a/libraries/libldap/sortctrl.c b/libraries/libldap/sortctrl.c index b4e1f8591e..05c66eec09 100644 --- a/libraries/libldap/sortctrl.c +++ b/libraries/libldap/sortctrl.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2006 The OpenLDAP Foundation. + * Copyright 1998-2007 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,9 +27,6 @@ * can be found in the file "build/LICENSE-2.0.1" in this distribution * of OpenLDAP Software. */ -/* Portions Copyright (C) The Internet Society (1997) - * ASN.1 fragments are from RFC 2251; see RFC for full legal notices. - */ #include "portable.h" @@ -296,14 +293,15 @@ ldap_create_sort_control_value( BerElement *ber = NULL; ber_tag_t tag; - if ( ld == NULL || keyList == NULL || value == NULL ) { - if ( ld ) - ld->ld_errno = LDAP_PARAM_ERROR; + assert( ld != NULL ); + assert( LDAP_VALID( ld ) ); + + if ( ld == NULL ) return LDAP_PARAM_ERROR; + if ( keyList == NULL || value == NULL ) { + ld->ld_errno = LDAP_PARAM_ERROR; return LDAP_PARAM_ERROR; } - assert( LDAP_VALID( ld ) ); - value->bv_val = NULL; value->bv_len = 0; @@ -410,7 +408,13 @@ ldap_create_sort_control( LDAPControl **ctrlp ) { struct berval value; - BerElement *ber; + + assert( ld != NULL ); + assert( LDAP_VALID( ld ) ); + + if ( ld == NULL ) { + return LDAP_PARAM_ERROR; + } if ( ctrlp == NULL ) { ld->ld_errno = LDAP_PARAM_ERROR; @@ -419,19 +423,11 @@ ldap_create_sort_control( ld->ld_errno = ldap_create_sort_control_value( ld, keyList, &value ); if ( ld->ld_errno == LDAP_SUCCESS ) { - if ((ber = ldap_alloc_ber_with_options(ld)) == NULL) { - ld->ld_errno = LDAP_NO_MEMORY; - return LDAP_NO_MEMORY; - } - - ld->ld_errno = ldap_create_control( LDAP_CONTROL_SORTREQUEST, - ber, isCritical, ctrlp ); - if ( ld->ld_errno == LDAP_SUCCESS ) { - (*ctrlp)->ldctl_value = value; - } else { + ld->ld_errno = ldap_control_create( LDAP_CONTROL_SORTREQUEST, + isCritical, &value, 0, ctrlp ); + if ( ld->ld_errno != LDAP_SUCCESS ) { LDAP_FREE( value.bv_val ); } - ber_free(ber, 1); } return ld->ld_errno; @@ -496,6 +492,9 @@ ldap_parse_sortresponse_control( ber_tag_t tag, berTag; ber_len_t berLen; + assert( ld != NULL ); + assert( LDAP_VALID( ld ) ); + if (ld == NULL) { return LDAP_PARAM_ERROR; }