X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Ffree.c;h=2a9392947e7d59ae84583d8f84f47cd558a45548;hb=c3e28a5488a8011ef0352f48fca85c48679205ba;hp=2d5b390a16c11d21c21cdbc09285e520c543be7f;hpb=8e60c8e287ba54ceee765cea1f5abb5f90a5f300;p=openldap diff --git a/libraries/libldap/free.c b/libraries/libldap/free.c index 2d5b390a16..2a9392947e 100644 --- a/libraries/libldap/free.c +++ b/libraries/libldap/free.c @@ -1,11 +1,23 @@ -/* - * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file - */ -/* Portions - * Copyright (c) 1994 The Regents of the University of Michigan. - * All rights reserved. +/* free.c */ +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2007 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* Portions Copyright (c) 1994 The Regents of the University of Michigan. + * All rights reserved. + */ + +/* * free.c - some free routines are included here to avoid having to * link in lots of extra code when not using certain features */ @@ -13,9 +25,8 @@ #include "portable.h" #include -#include +#include -#include #include #include @@ -37,57 +48,27 @@ ldap_memvfree( void **v ) } void * -ldap_memalloc( size_t s ) +ldap_memalloc( ber_len_t s ) { return LDAP_MALLOC( s ); } void * -ldap_memcalloc( size_t n, size_t s ) +ldap_memcalloc( ber_len_t n, ber_len_t s ) { return LDAP_CALLOC( n, s ); } void * -ldap_memrealloc( void* p, size_t s ) +ldap_memrealloc( void* p, ber_len_t s ) { return LDAP_REALLOC( p, s ); } -void -ldap_getfilter_free( LDAPFiltDesc *lfdp ) +char * +ldap_strdup( LDAP_CONST char *p ) { - LDAPFiltList *flp, *nextflp; - LDAPFiltInfo *fip, *nextfip; - - for ( flp = lfdp->lfd_filtlist; flp != NULL; flp = nextflp ) { - for ( fip = flp->lfl_ilist; fip != NULL; fip = nextfip ) { - nextfip = fip->lfi_next; - LDAP_FREE( fip->lfi_filter ); - LDAP_FREE( fip->lfi_desc ); - LDAP_FREE( fip ); - } - nextflp = flp->lfl_next; - LDAP_FREE( flp->lfl_pattern ); - LDAP_FREE( flp->lfl_delims ); - LDAP_FREE( flp->lfl_tag ); - LDAP_FREE( flp ); - } - - if ( lfdp->lfd_curvalcopy != NULL ) { - LDAP_FREE( lfdp->lfd_curvalcopy ); - } - if ( lfdp->lfd_curvalwords != NULL ) { - LDAP_FREE( lfdp->lfd_curvalwords ); - } - if ( lfdp->lfd_filtprefix != NULL ) { - LDAP_FREE( lfdp->lfd_filtprefix ); - } - if ( lfdp->lfd_filtsuffix != NULL ) { - LDAP_FREE( lfdp->lfd_filtsuffix ); - } - - LDAP_FREE( lfdp ); + return LDAP_STRDUP( p ); } /* @@ -106,13 +87,21 @@ ldap_mods_free( LDAPMod **mods, int freemods ) for ( i = 0; mods[i] != NULL; i++ ) { if ( mods[i]->mod_op & LDAP_MOD_BVALUES ) { - ber_bvecfree( mods[i]->mod_bvalues ); - } else { - ldap_value_free( mods[i]->mod_values ); + if( mods[i]->mod_bvalues != NULL ) + ber_bvecfree( mods[i]->mod_bvalues ); + + } else if( mods[i]->mod_values != NULL ) { + LDAP_VFREE( mods[i]->mod_values ); } + + if ( mods[i]->mod_type != NULL ) { + LDAP_FREE( mods[i]->mod_type ); + } + LDAP_FREE( (char *) mods[i] ); } - if ( freemods ) + if ( freemods ) { LDAP_FREE( (char *) mods ); + } }