+int
+map_ldap_destroy(
+ struct rewrite_builtin_map **pmap
+)
+{
+ struct ldap_map_data *data;
+
+ assert( pmap );
+ assert( *pmap );
+
+ data = ( struct ldap_map_data * )(*pmap)->lb_private;
+
+ if ( data->lm_when != MAP_LDAP_EVERYTIME && data->lm_ld != NULL ) {
+ ldap_unbind_s( data->lm_ld );
+ data->lm_ld = NULL;
+ }
+
+ if ( data->lm_lud ) {
+ ldap_free_urldesc( data->lm_lud );
+ data->lm_lud = NULL;
+ }
+
+ if ( data->lm_url ) {
+ free( data->lm_url );
+ data->lm_url = NULL;
+ }
+
+ if ( data->lm_binddn ) {
+ free( data->lm_binddn );
+ data->lm_binddn = NULL;
+ }
+
+ if (data->lm_bindpw ) {
+ memset( data->lm_bindpw, 0, strlen( data->lm_bindpw ) );
+ free( data->lm_bindpw );
+ data->lm_bindpw = NULL;
+ }
+
+ free( data );
+ (*pmap)->lb_private = NULL;
+
+ return 0;
+}
+