X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fsortctrl.c;h=9c2903527351a3106ffa4532f2fc4b6f0bb02659;hb=473e2c997f6b1f226d35da186db8033c922001f3;hp=a2bd69a2fb7a1245f1b67bea1ff98135035ba47b;hpb=de79a7bfec60776ffd5a3968fa78c4a00bc05a55;p=openldap diff --git a/libraries/libldap/sortctrl.c b/libraries/libldap/sortctrl.c index a2bd69a2fb..9c29035273 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-2011 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,15 +293,18 @@ ldap_create_sort_control_value( BerElement *ber = NULL; ber_tag_t tag; - if ( ld == NULL || keyList == NULL || value == NULL ) { + 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 ld->ld_errno; + return LDAP_PARAM_ERROR; } - assert( LDAP_VALID( ld ) ); - value->bv_val = NULL; value->bv_len = 0; + ld->ld_errno = LDAP_SUCCESS; ber = ldap_alloc_ber_with_options( ld ); if ( ber == NULL) { @@ -410,6 +410,13 @@ ldap_create_sort_control( { struct berval value; + assert( ld != NULL ); + assert( LDAP_VALID( ld ) ); + + if ( ld == NULL ) { + return LDAP_PARAM_ERROR; + } + if ( ctrlp == NULL ) { ld->ld_errno = LDAP_PARAM_ERROR; return ld->ld_errno; @@ -417,11 +424,9 @@ ldap_create_sort_control( ld->ld_errno = ldap_create_sort_control_value( ld, keyList, &value ); if ( ld->ld_errno == LDAP_SUCCESS ) { - ld->ld_errno = ldap_create_control( LDAP_CONTROL_SORTREQUEST, - NULL, 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 ); } } @@ -479,18 +484,20 @@ ldap_create_sort_control( int ldap_parse_sortresponse_control( - LDAP *ld, - LDAPControl *ctrl, - unsigned long *returnCode, - char **attribute ) + LDAP *ld, + LDAPControl *ctrl, + ber_int_t *returnCode, + char **attribute ) { BerElement *ber; ber_tag_t tag, berTag; ber_len_t berLen; + assert( ld != NULL ); + assert( LDAP_VALID( ld ) ); + if (ld == NULL) { - ld->ld_errno = LDAP_PARAM_ERROR; - return(ld->ld_errno); + return LDAP_PARAM_ERROR; } if (ctrl == NULL) {