X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fad.c;h=0e79845f37ad7fc6787eb2fab0c2916daf188f2b;hb=24db207196a453a4f9acdce08593c7e0ed53ce4c;hp=4dcce9372e0ec8b10ddb79c7c3e2ce6cf242e408;hpb=b626499794c9330c16513afe80a53ccc22e75891;p=openldap diff --git a/servers/slapd/ad.c b/servers/slapd/ad.c index 4dcce9372e..0e79845f37 100644 --- a/servers/slapd/ad.c +++ b/servers/slapd/ad.c @@ -963,10 +963,8 @@ str2anlist( AttributeName *an, char *in, const char *brkstr ) return( an ); reterr: - for ( i = 0; an[i].an_name.bv_val; i++ ) { - free( an[i].an_name.bv_val ); - } - free( an ); + anlist_free( an, 1, NULL ); + /* * overwrites input string * on error! @@ -976,6 +974,24 @@ reterr: return NULL; } +void +anlist_free( AttributeName *an, int freename, void *ctx ) +{ + if ( an == NULL ) { + return; + } + + if ( freename ) { + int i; + + for ( i = 0; an[i].an_name.bv_val; i++ ) { + ber_memfree_x( an[i].an_name.bv_val, ctx ); + } + } + + ber_memfree_x( an, ctx ); +} + char **anlist2charray_x( AttributeName *an, int dup, void *ctx ) { char **attrs;