From: Kurt Zeilenga Date: Sat, 14 Oct 2000 02:13:53 +0000 (+0000) Subject: Rework control create/dup routines to distinguish not X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~1742 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=3d57f2ae6797df67577ed2ef09bb102c4861e385;p=openldap Rework control create/dup routines to distinguish not present value from empty value. --- diff --git a/libraries/libldap/controls.c b/libraries/libldap/controls.c index c48e83cb89..58ca93e81a 100644 --- a/libraries/libldap/controls.c +++ b/libraries/libldap/controls.c @@ -336,8 +336,9 @@ ldap_control_dup( const LDAPControl *c ) new->ldctl_oid = NULL; } - if( c->ldctl_value.bv_len > 0 ) { - new->ldctl_value.bv_val = (char *) LDAP_MALLOC( c->ldctl_value.bv_len ); + if( c->ldctl_value.bv_val != NULL ) { + new->ldctl_value.bv_val = + (char *) LDAP_MALLOC( c->ldctl_value.bv_len + 1 ); if(new->ldctl_value.bv_val == NULL) { if(new->ldctl_oid != NULL) { @@ -347,10 +348,12 @@ ldap_control_dup( const LDAPControl *c ) return NULL; } + new->ldctl_value.bv_len = c->ldctl_value.bv_len; + AC_MEMCPY( new->ldctl_value.bv_val, c->ldctl_value.bv_val, c->ldctl_value.bv_len ); - new->ldctl_value.bv_len = c->ldctl_value.bv_len; + new->ldctl_value.bv_val[new->ldctl_value.bv_len] = '\0'; } else { new->ldctl_value.bv_len = 0; @@ -410,7 +413,7 @@ ldap_create_control( LDAPControl *ctrl; struct berval *bvalp; - if ( requestOID == NULL || ber == NULL || ctrlp == NULL ) { + if ( requestOID == NULL || ctrlp == NULL ) { return LDAP_PARAM_ERROR; }