mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 06:20:47 +00:00
wldap32: Avoid returning pointers from the Unix interface functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
cefd34fbda
commit
3cc3dd78e1
|
@ -51,7 +51,7 @@ BerElement * CDECL ber_alloc_t( int options )
|
||||||
BerElement *ret;
|
BerElement *ret;
|
||||||
|
|
||||||
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
if (!(ret = malloc( sizeof(*ret) ))) return NULL;
|
||||||
if (!(BER(ret) = ldap_funcs->fn_ber_alloc_t( options )))
|
if (ldap_funcs->fn_ber_alloc_t( options, (void **)&BER(ret) ))
|
||||||
{
|
{
|
||||||
free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -226,7 +226,7 @@ BerElement * CDECL ber_init( BERVAL *berval )
|
||||||
free( ret );
|
free( ret );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (!(BER(ret) = ldap_funcs->fn_ber_init( bervalU )))
|
if (ldap_funcs->fn_ber_init( bervalU, (void **)&BER(ret) ))
|
||||||
{
|
{
|
||||||
free( ret );
|
free( ret );
|
||||||
ret = NULL;
|
ret = NULL;
|
||||||
|
|
|
@ -75,7 +75,7 @@ WCHAR * CDECL ldap_dn2ufnW( WCHAR *dn )
|
||||||
|
|
||||||
if (!(dnU = strWtoU( dn ))) return NULL;
|
if (!(dnU = strWtoU( dn ))) return NULL;
|
||||||
|
|
||||||
retU = ldap_funcs->fn_ldap_dn2ufn( dnU );
|
ldap_funcs->fn_ldap_dn2ufn( dnU, &retU );
|
||||||
ret = strUtoW( retU );
|
ret = strUtoW( retU );
|
||||||
|
|
||||||
free( dnU );
|
free( dnU );
|
||||||
|
@ -131,7 +131,7 @@ WCHAR ** CDECL ldap_explode_dnW( WCHAR *dn, ULONG notypes )
|
||||||
|
|
||||||
if (!(dnU = strWtoU( dn ))) return NULL;
|
if (!(dnU = strWtoU( dn ))) return NULL;
|
||||||
|
|
||||||
retU = ldap_funcs->fn_ldap_explode_dn( dnU, notypes );
|
ldap_funcs->fn_ldap_explode_dn( dnU, notypes, &retU );
|
||||||
ret = strarrayUtoW( retU );
|
ret = strarrayUtoW( retU );
|
||||||
|
|
||||||
free( dnU );
|
free( dnU );
|
||||||
|
@ -185,7 +185,7 @@ WCHAR * CDECL ldap_get_dnW( LDAP *ld, LDAPMessage *entry )
|
||||||
|
|
||||||
if (!ld || !entry) return NULL;
|
if (!ld || !entry) return NULL;
|
||||||
|
|
||||||
retU = ldap_funcs->fn_ldap_get_dn( CTX(ld), MSG(entry) );
|
ldap_funcs->fn_ldap_get_dn( CTX(ld), MSG(entry), &retU );
|
||||||
|
|
||||||
ret = strUtoW( retU );
|
ret = strUtoW( retU );
|
||||||
ldap_funcs->fn_ldap_memfree( retU );
|
ldap_funcs->fn_ldap_memfree( retU );
|
||||||
|
|
|
@ -59,9 +59,10 @@ C_ASSERT( sizeof(struct timevalU) == sizeof(struct timeval) );
|
||||||
|
|
||||||
static LDAPMod *nullmods[] = { NULL };
|
static LDAPMod *nullmods[] = { NULL };
|
||||||
|
|
||||||
static void * CDECL wrap_ber_alloc_t( int options )
|
static int CDECL wrap_ber_alloc_t( int options, void **ret )
|
||||||
{
|
{
|
||||||
return ber_alloc_t( options );
|
*ret = ber_alloc_t( options );
|
||||||
|
return *ret ? LDAP_SUCCESS : WLDAP32_LBER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CDECL wrap_ber_bvecfree( struct bervalU **berval )
|
static void CDECL wrap_ber_bvecfree( struct bervalU **berval )
|
||||||
|
@ -105,9 +106,10 @@ static void CDECL wrap_ber_free( void *ber, int freebuf )
|
||||||
ber_free( ber, freebuf );
|
ber_free( ber, freebuf );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void * CDECL wrap_ber_init( struct bervalU *berval )
|
static int CDECL wrap_ber_init( struct bervalU *berval, void **ret )
|
||||||
{
|
{
|
||||||
return ber_init( (struct berval *)berval );
|
*ret = ber_init( (struct berval *)berval );
|
||||||
|
return *ret ? LDAP_SUCCESS : WLDAP32_LBER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int CDECL wrap_ber_next_element( void *ber, unsigned int *ret_len, char *last )
|
static unsigned int CDECL wrap_ber_next_element( void *ber, unsigned int *ret_len, char *last )
|
||||||
|
@ -260,14 +262,16 @@ static int CDECL wrap_ldap_delete_ext_s( void *ld, const char *dn, LDAPControlU
|
||||||
return ldap_delete_ext_s( ld, dn ? dn : "", (LDAPControl **)serverctrls, (LDAPControl **)clientctrls );
|
return ldap_delete_ext_s( ld, dn ? dn : "", (LDAPControl **)serverctrls, (LDAPControl **)clientctrls );
|
||||||
}
|
}
|
||||||
|
|
||||||
static char * CDECL wrap_ldap_dn2ufn( const char *dn )
|
static int CDECL wrap_ldap_dn2ufn( const char *dn, char **ret )
|
||||||
{
|
{
|
||||||
return ldap_dn2ufn( dn );
|
*ret = ldap_dn2ufn( dn );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char ** CDECL wrap_ldap_explode_dn( const char *dn, int notypes )
|
static int CDECL wrap_ldap_explode_dn( const char *dn, int notypes, char ***ret )
|
||||||
{
|
{
|
||||||
return ldap_explode_dn( dn, notypes );
|
*ret = ldap_explode_dn( dn, notypes );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CDECL wrap_ldap_extended_operation( void *ld, const char *oid, struct bervalU *data, LDAPControlU **serverctrls,
|
static int CDECL wrap_ldap_extended_operation( void *ld, const char *oid, struct bervalU *data, LDAPControlU **serverctrls,
|
||||||
|
@ -285,24 +289,28 @@ static int CDECL wrap_ldap_extended_operation_s( void *ld, const char *oid, stru
|
||||||
(LDAPControl **)clientctrls, retoid, (struct berval **)retdata );
|
(LDAPControl **)clientctrls, retoid, (struct berval **)retdata );
|
||||||
}
|
}
|
||||||
|
|
||||||
static char * CDECL wrap_ldap_get_dn( void *ld, void *entry )
|
static int CDECL wrap_ldap_get_dn( void *ld, void *entry, char **ret )
|
||||||
{
|
{
|
||||||
return ldap_get_dn( ld, entry );
|
*ret = ldap_get_dn( ld, entry );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char * CDECL wrap_ldap_first_attribute( void *ld, void *entry, void **ber )
|
static int CDECL wrap_ldap_first_attribute( void *ld, void *entry, void **ber, char **ret )
|
||||||
{
|
{
|
||||||
return ldap_first_attribute( ld, entry, (BerElement **)ber );
|
*ret = ldap_first_attribute( ld, entry, (BerElement **)ber );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void * CDECL wrap_ldap_first_entry( void *ld, void *chain )
|
static int CDECL wrap_ldap_first_entry( void *ld, void *chain, void **ret )
|
||||||
{
|
{
|
||||||
return ldap_first_entry( ld, chain );
|
*ret = ldap_first_entry( ld, chain );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void * CDECL wrap_ldap_first_reference( void *ld, void *chain )
|
static int CDECL wrap_ldap_first_reference( void *ld, void *chain, void **ret )
|
||||||
{
|
{
|
||||||
return ldap_first_reference( ld, chain );
|
*ret = ldap_first_reference( ld, chain );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CDECL wrap_ldap_get_option( void *ld, int option, void *value )
|
static int CDECL wrap_ldap_get_option( void *ld, int option, void *value )
|
||||||
|
@ -310,9 +318,10 @@ static int CDECL wrap_ldap_get_option( void *ld, int option, void *value )
|
||||||
return ldap_get_option( ld, option, value );
|
return ldap_get_option( ld, option, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bervalU ** CDECL wrap_ldap_get_values_len( void *ld, void *entry, const char *attr )
|
static int CDECL wrap_ldap_get_values_len( void *ld, void *entry, const char *attr, struct bervalU ***ret )
|
||||||
{
|
{
|
||||||
return (struct bervalU **)ldap_get_values_len( ld, entry, attr );
|
*ret = (struct bervalU **)ldap_get_values_len( ld, entry, attr );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CDECL wrap_ldap_initialize( void **ld, const char *url )
|
static int CDECL wrap_ldap_initialize( void **ld, const char *url )
|
||||||
|
@ -350,19 +359,22 @@ static int CDECL wrap_ldap_msgfree( void *msg )
|
||||||
return ldap_msgfree( msg );
|
return ldap_msgfree( msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
static char * CDECL wrap_ldap_next_attribute( void *ld, void *entry, void *ber )
|
static int CDECL wrap_ldap_next_attribute( void *ld, void *entry, void *ber, char **ret )
|
||||||
{
|
{
|
||||||
return ldap_next_attribute( ld, entry, ber );
|
*ret = ldap_next_attribute( ld, entry, ber );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void * CDECL wrap_ldap_next_entry( void *ld, void *entry )
|
static int CDECL wrap_ldap_next_entry( void *ld, void *entry, void **ret )
|
||||||
{
|
{
|
||||||
return ldap_next_entry( ld, entry );
|
*ret = ldap_next_entry( ld, entry );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void * CDECL wrap_ldap_next_reference( void *ld, void *entry )
|
static int CDECL wrap_ldap_next_reference( void *ld, void *entry, void **ret )
|
||||||
{
|
{
|
||||||
return ldap_next_reference( ld, entry );
|
*ret = ldap_next_reference( ld, entry );
|
||||||
|
return *ret ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int CDECL wrap_ldap_parse_extended_result( void *ld, void *result, char **retoid, struct bervalU **retdata, int free )
|
static int CDECL wrap_ldap_parse_extended_result( void *ld, void *result, char **retoid, struct bervalU **retdata, int free )
|
||||||
|
|
|
@ -95,13 +95,13 @@ struct sasl_interactive_bind_id
|
||||||
|
|
||||||
struct ldap_funcs
|
struct ldap_funcs
|
||||||
{
|
{
|
||||||
void * (CDECL *fn_ber_alloc_t)(int);
|
int (CDECL *fn_ber_alloc_t)(int, void **);
|
||||||
void (CDECL *fn_ber_bvecfree)(struct bervalU **);
|
void (CDECL *fn_ber_bvecfree)(struct bervalU **);
|
||||||
void (CDECL *fn_ber_bvfree)(struct bervalU *);
|
void (CDECL *fn_ber_bvfree)(struct bervalU *);
|
||||||
unsigned int (CDECL *fn_ber_first_element)(void *, unsigned int *, char **);
|
unsigned int (CDECL *fn_ber_first_element)(void *, unsigned int *, char **);
|
||||||
int (CDECL *fn_ber_flatten)(void *, struct bervalU **);
|
int (CDECL *fn_ber_flatten)(void *, struct bervalU **);
|
||||||
void (CDECL *fn_ber_free)(void *, int);
|
void (CDECL *fn_ber_free)(void *, int);
|
||||||
void * (CDECL *fn_ber_init)(struct bervalU *);
|
int (CDECL *fn_ber_init)(struct bervalU *, void **);
|
||||||
unsigned int (CDECL *fn_ber_next_element)(void *, unsigned int *, char *);
|
unsigned int (CDECL *fn_ber_next_element)(void *, unsigned int *, char *);
|
||||||
unsigned int (CDECL *fn_ber_peek_tag)(void *, unsigned int *);
|
unsigned int (CDECL *fn_ber_peek_tag)(void *, unsigned int *);
|
||||||
unsigned int (CDECL *fn_ber_skip_tag)(void *, unsigned int *);
|
unsigned int (CDECL *fn_ber_skip_tag)(void *, unsigned int *);
|
||||||
|
@ -124,27 +124,27 @@ struct ldap_funcs
|
||||||
int (CDECL *fn_ldap_create_vlv_control)(void *, LDAPVLVInfoU *, LDAPControlU **);
|
int (CDECL *fn_ldap_create_vlv_control)(void *, LDAPVLVInfoU *, LDAPControlU **);
|
||||||
int (CDECL *fn_ldap_delete_ext)(void *, const char *, LDAPControlU **, LDAPControlU **, ULONG *);
|
int (CDECL *fn_ldap_delete_ext)(void *, const char *, LDAPControlU **, LDAPControlU **, ULONG *);
|
||||||
int (CDECL *fn_ldap_delete_ext_s)(void *, const char *, LDAPControlU **, LDAPControlU **);
|
int (CDECL *fn_ldap_delete_ext_s)(void *, const char *, LDAPControlU **, LDAPControlU **);
|
||||||
char * (CDECL *fn_ldap_dn2ufn)(const char *);
|
int (CDECL *fn_ldap_dn2ufn)(const char *, char **);
|
||||||
char ** (CDECL *fn_ldap_explode_dn)(const char *, int);
|
int (CDECL *fn_ldap_explode_dn)(const char *, int, char ***);
|
||||||
int (CDECL *fn_ldap_extended_operation)(void *, const char *, struct bervalU *, LDAPControlU **,
|
int (CDECL *fn_ldap_extended_operation)(void *, const char *, struct bervalU *, LDAPControlU **,
|
||||||
LDAPControlU **, ULONG *);
|
LDAPControlU **, ULONG *);
|
||||||
int (CDECL *fn_ldap_extended_operation_s)(void *, const char *, struct bervalU *, LDAPControlU **,
|
int (CDECL *fn_ldap_extended_operation_s)(void *, const char *, struct bervalU *, LDAPControlU **,
|
||||||
LDAPControlU **, char **, struct bervalU **);
|
LDAPControlU **, char **, struct bervalU **);
|
||||||
char * (CDECL *fn_ldap_get_dn)(void *, void *);
|
int (CDECL *fn_ldap_get_dn)(void *, void *, char **);
|
||||||
int (CDECL *fn_ldap_get_option)(void *, int, void *);
|
int (CDECL *fn_ldap_get_option)(void *, int, void *);
|
||||||
struct bervalU ** (CDECL *fn_ldap_get_values_len)(void *, void *, const char *);
|
int (CDECL *fn_ldap_get_values_len)(void *, void *, const char *, struct bervalU ***);
|
||||||
int (CDECL *fn_ldap_initialize)(void **, const char *);
|
int (CDECL *fn_ldap_initialize)(void **, const char *);
|
||||||
char * (CDECL *fn_ldap_first_attribute)(void *, void *, void **);
|
int (CDECL *fn_ldap_first_attribute)(void *, void *, void **, char **);
|
||||||
void * (CDECL *fn_ldap_first_entry)(void *, void *);
|
int (CDECL *fn_ldap_first_entry)(void *, void *, void **);
|
||||||
void * (CDECL *fn_ldap_first_reference)(void *, void *);
|
int (CDECL *fn_ldap_first_reference)(void *, void *, void **);
|
||||||
void (CDECL *fn_ldap_memfree)(void *);
|
void (CDECL *fn_ldap_memfree)(void *);
|
||||||
void (CDECL *fn_ldap_memvfree)(void **);
|
void (CDECL *fn_ldap_memvfree)(void **);
|
||||||
int (CDECL *fn_ldap_modify_ext)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **, ULONG *);
|
int (CDECL *fn_ldap_modify_ext)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **, ULONG *);
|
||||||
int (CDECL *fn_ldap_modify_ext_s)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **);
|
int (CDECL *fn_ldap_modify_ext_s)(void *, const char *, LDAPModU **, LDAPControlU **, LDAPControlU **);
|
||||||
int (CDECL *fn_ldap_msgfree)(void *);
|
int (CDECL *fn_ldap_msgfree)(void *);
|
||||||
char * (CDECL *fn_ldap_next_attribute)(void *, void *, void *);
|
int (CDECL *fn_ldap_next_attribute)(void *, void *, void *, char **);
|
||||||
void * (CDECL *fn_ldap_next_entry)(void *, void *);
|
int (CDECL *fn_ldap_next_entry)(void *, void *, void **);
|
||||||
void * (CDECL *fn_ldap_next_reference)(void *, void *);
|
int (CDECL *fn_ldap_next_reference)(void *, void *, void **);
|
||||||
int (CDECL *fn_ldap_parse_extended_result)(void *, void *, char **, struct bervalU **, int);
|
int (CDECL *fn_ldap_parse_extended_result)(void *, void *, char **, struct bervalU **, int);
|
||||||
int (CDECL *fn_ldap_parse_reference)(void *, void *, char ***, LDAPControlU ***, int);
|
int (CDECL *fn_ldap_parse_reference)(void *, void *, char ***, LDAPControlU ***, int);
|
||||||
int (CDECL *fn_ldap_parse_result)(void *, void *, int *, char **, char **, char ***, LDAPControlU ***, int);
|
int (CDECL *fn_ldap_parse_result)(void *, void *, int *, char **, char **, char ***, LDAPControlU ***, int);
|
||||||
|
|
|
@ -299,7 +299,7 @@ WCHAR * CDECL ldap_first_attributeW( LDAP *ld, LDAPMessage *entry, BerElement **
|
||||||
|
|
||||||
if (!ld || !entry) return NULL;
|
if (!ld || !entry) return NULL;
|
||||||
|
|
||||||
retU = ldap_funcs->fn_ldap_first_attribute( CTX(ld), MSG(entry), &berU );
|
ldap_funcs->fn_ldap_first_attribute( CTX(ld), MSG(entry), &berU, &retU );
|
||||||
if (retU && (ber = malloc( sizeof(*ber) )))
|
if (retU && (ber = malloc( sizeof(*ber) )))
|
||||||
{
|
{
|
||||||
BER(ber) = (char *)berU;
|
BER(ber) = (char *)berU;
|
||||||
|
@ -335,8 +335,7 @@ LDAPMessage * CDECL ldap_first_entry( LDAP *ld, LDAPMessage *res )
|
||||||
|
|
||||||
if (!ld || !res) return NULL;
|
if (!ld || !res) return NULL;
|
||||||
|
|
||||||
msgU = ldap_funcs->fn_ldap_first_entry( CTX(ld), MSG(res) );
|
if (!ldap_funcs->fn_ldap_first_entry( CTX(ld), MSG(res), &msgU ))
|
||||||
if (msgU)
|
|
||||||
{
|
{
|
||||||
assert( msgU == MSG(res) );
|
assert( msgU == MSG(res) );
|
||||||
return res;
|
return res;
|
||||||
|
@ -366,8 +365,7 @@ LDAPMessage * CDECL ldap_first_reference( LDAP *ld, LDAPMessage *res )
|
||||||
|
|
||||||
if (!ld) return NULL;
|
if (!ld) return NULL;
|
||||||
|
|
||||||
msgU = ldap_funcs->fn_ldap_first_reference( CTX(ld), MSG(res) );
|
if (!ldap_funcs->fn_ldap_first_reference( CTX(ld), MSG(res), &msgU ))
|
||||||
if (msgU)
|
|
||||||
{
|
{
|
||||||
assert( msgU == MSG(res) );
|
assert( msgU == MSG(res) );
|
||||||
return res;
|
return res;
|
||||||
|
@ -479,8 +477,7 @@ WCHAR * CDECL ldap_next_attributeW( LDAP *ld, LDAPMessage *entry, BerElement *pt
|
||||||
|
|
||||||
if (!ld || !entry || !ptr) return NULL;
|
if (!ld || !entry || !ptr) return NULL;
|
||||||
|
|
||||||
retU = ldap_funcs->fn_ldap_next_attribute( CTX(ld), MSG(entry), BER(ptr) );
|
if (!ldap_funcs->fn_ldap_next_attribute( CTX(ld), MSG(entry), BER(ptr), &retU ))
|
||||||
if (retU)
|
|
||||||
{
|
{
|
||||||
ret = strUtoW( retU );
|
ret = strUtoW( retU );
|
||||||
ldap_funcs->fn_ldap_memfree( retU );
|
ldap_funcs->fn_ldap_memfree( retU );
|
||||||
|
@ -516,7 +513,7 @@ LDAPMessage * CDECL ldap_next_entry( LDAP *ld, LDAPMessage *entry )
|
||||||
|
|
||||||
if (entry->lm_next) return entry->lm_next;
|
if (entry->lm_next) return entry->lm_next;
|
||||||
|
|
||||||
msgU = ldap_funcs->fn_ldap_next_entry( CTX(ld), MSG(entry) );
|
ldap_funcs->fn_ldap_next_entry( CTX(ld), MSG(entry), &msgU );
|
||||||
if (msgU && (msg = calloc( 1, sizeof(*msg) )))
|
if (msgU && (msg = calloc( 1, sizeof(*msg) )))
|
||||||
{
|
{
|
||||||
MSG(msg) = msgU;
|
MSG(msg) = msgU;
|
||||||
|
@ -553,7 +550,7 @@ LDAPMessage * CDECL ldap_next_reference( LDAP *ld, LDAPMessage *entry )
|
||||||
|
|
||||||
if (entry->lm_next) return entry->lm_next;
|
if (entry->lm_next) return entry->lm_next;
|
||||||
|
|
||||||
msgU = ldap_funcs->fn_ldap_next_reference( CTX(ld), MSG(entry) );
|
ldap_funcs->fn_ldap_next_reference( CTX(ld), MSG(entry), &msgU );
|
||||||
if (msgU && (msg = calloc( 1, sizeof(*msg) )))
|
if (msgU && (msg = calloc( 1, sizeof(*msg) )))
|
||||||
{
|
{
|
||||||
MSG(msg) = msgU;
|
MSG(msg) = msgU;
|
||||||
|
|
|
@ -377,11 +377,10 @@ static BOOL query_supported_server_ctrls( LDAP *ld )
|
||||||
attrs, FALSE, NULL, NULL, NULL, 0, &res ) );
|
attrs, FALSE, NULL, NULL, NULL, 0, &res ) );
|
||||||
if (ret != LDAP_SUCCESS) return FALSE;
|
if (ret != LDAP_SUCCESS) return FALSE;
|
||||||
|
|
||||||
entry = ldap_funcs->fn_ldap_first_entry( CTX(ld), res );
|
if (!ldap_funcs->fn_ldap_first_entry( CTX(ld), res, &entry ))
|
||||||
if (entry)
|
|
||||||
{
|
{
|
||||||
ULONG count, i;
|
ULONG count, i;
|
||||||
ctrls = ldap_funcs->fn_ldap_get_values_len( CTX(ld), entry, attrs[0] );
|
ldap_funcs->fn_ldap_get_values_len( CTX(ld), entry, attrs[0], &ctrls );
|
||||||
count = ldap_funcs->fn_ldap_count_values_len( ctrls );
|
count = ldap_funcs->fn_ldap_count_values_len( ctrls );
|
||||||
for (i = 0; i < count; i++) TRACE("%u: %s\n", i, debugstr_an( ctrls[i]->bv_val, ctrls[i]->bv_len ));
|
for (i = 0; i < count; i++) TRACE("%u: %s\n", i, debugstr_an( ctrls[i]->bv_val, ctrls[i]->bv_len ));
|
||||||
*(struct bervalU ***)&SERVER_CTRLS(ld) = ctrls;
|
*(struct bervalU ***)&SERVER_CTRLS(ld) = ctrls;
|
||||||
|
|
|
@ -197,7 +197,7 @@ WCHAR ** CDECL ldap_get_valuesW( LDAP *ld, LDAPMessage *entry, WCHAR *attr )
|
||||||
|
|
||||||
if (!ld || !entry || !attr || !(attrU = strWtoU( attr ))) return NULL;
|
if (!ld || !entry || !attr || !(attrU = strWtoU( attr ))) return NULL;
|
||||||
|
|
||||||
if ((bv = ldap_funcs->fn_ldap_get_values_len( CTX(ld), MSG(entry), attrU )))
|
if (!ldap_funcs->fn_ldap_get_values_len( CTX(ld), MSG(entry), attrU, &bv ))
|
||||||
{
|
{
|
||||||
retU = bv2str_array( bv );
|
retU = bv2str_array( bv );
|
||||||
ret = strarrayUtoW( retU );
|
ret = strarrayUtoW( retU );
|
||||||
|
@ -259,7 +259,7 @@ struct berval ** CDECL ldap_get_values_lenW( LDAP *ld, LDAPMessage *message, WCH
|
||||||
|
|
||||||
if (!ld || !message || !attr || !(attrU = strWtoU( attr ))) return NULL;
|
if (!ld || !message || !attr || !(attrU = strWtoU( attr ))) return NULL;
|
||||||
|
|
||||||
if ((retU = ldap_funcs->fn_ldap_get_values_len( CTX(ld), MSG(message), attrU )))
|
if (!ldap_funcs->fn_ldap_get_values_len( CTX(ld), MSG(message), attrU, &retU ))
|
||||||
{
|
{
|
||||||
ret = bvarrayUtoW( retU );
|
ret = bvarrayUtoW( retU );
|
||||||
bvarrayfreeU( retU );
|
bvarrayfreeU( retU );
|
||||||
|
|
Loading…
Reference in a new issue