Avoid using deprecated openldap functions.
Correct some return values.
This commit is contained in:
parent
ae6239d53d
commit
6c4011e768
|
@ -67,6 +67,7 @@ ULONG ldap_deleteW( WLDAP32_LDAP *ld, PWCHAR dn )
|
||||||
ULONG ret = LDAP_NOT_SUPPORTED;
|
ULONG ret = LDAP_NOT_SUPPORTED;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char *dnU = NULL;
|
char *dnU = NULL;
|
||||||
|
int msg;
|
||||||
|
|
||||||
TRACE( "(%p, %s)\n", ld, debugstr_w(dn) );
|
TRACE( "(%p, %s)\n", ld, debugstr_w(dn) );
|
||||||
|
|
||||||
|
@ -77,7 +78,13 @@ ULONG ldap_deleteW( WLDAP32_LDAP *ld, PWCHAR dn )
|
||||||
if (!dnU) return WLDAP32_LDAP_NO_MEMORY;
|
if (!dnU) return WLDAP32_LDAP_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_delete( ld, dn ? dnU : "" );
|
ret = ldap_delete_ext( ld, dn ? dnU : "", NULL, NULL, &msg );
|
||||||
|
|
||||||
|
if (ret == LDAP_SUCCESS)
|
||||||
|
ret = msg;
|
||||||
|
else
|
||||||
|
ret = ~0UL;
|
||||||
|
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -275,7 +282,7 @@ ULONG ldap_delete_sW( WLDAP32_LDAP *ld, PWCHAR dn )
|
||||||
if (!dnU) return WLDAP32_LDAP_NO_MEMORY;
|
if (!dnU) return WLDAP32_LDAP_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_delete_s( ld, dn ? dnU : "" );
|
ret = ldap_delete_ext_s( ld, dn ? dnU : "", NULL, NULL );
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -118,7 +118,7 @@ PWCHAR *ldap_explode_dnW( PWCHAR dn, ULONG notypes )
|
||||||
ret = strarrayUtoW( retU );
|
ret = strarrayUtoW( retU );
|
||||||
|
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
ldap_value_free( retU );
|
ldap_memvfree( (void **)retU );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -84,11 +84,18 @@ ULONG WLDAP32_ldap_result2error( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *res, ULO
|
||||||
{
|
{
|
||||||
ULONG ret = LDAP_NOT_SUPPORTED;
|
ULONG ret = LDAP_NOT_SUPPORTED;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
|
int error;
|
||||||
|
|
||||||
TRACE( "(%p, %p, 0x%08lx)\n", ld, res, free );
|
TRACE( "(%p, %p, 0x%08lx)\n", ld, res, free );
|
||||||
|
|
||||||
if (!ld) return ~0UL;
|
if (!ld || !res) return ~0UL;
|
||||||
ret = ldap_result2error( ld, res, free );
|
|
||||||
|
ret = ldap_parse_result( ld, res, &error, NULL, NULL, NULL, NULL, free );
|
||||||
|
|
||||||
|
if (ret == LDAP_SUCCESS)
|
||||||
|
ret = error;
|
||||||
|
else
|
||||||
|
ret = ~0UL;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -50,7 +50,7 @@ ULONG WLDAP32_ldap_abandon( WLDAP32_LDAP *ld, ULONG msgid )
|
||||||
TRACE( "(%p, 0x%08lx)\n", ld, msgid );
|
TRACE( "(%p, 0x%08lx)\n", ld, msgid );
|
||||||
|
|
||||||
if (!ld) return ~0UL;
|
if (!ld) return ~0UL;
|
||||||
ret = ldap_abandon( ld, msgid );
|
ret = ldap_abandon_ext( ld, msgid, NULL, NULL );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -81,7 +81,7 @@ ULONG ldap_check_filterW( WLDAP32_LDAP *ld, PWCHAR filter )
|
||||||
TRACE( "(%p, %s)\n", ld, debugstr_w(filter) );
|
TRACE( "(%p, %s)\n", ld, debugstr_w(filter) );
|
||||||
|
|
||||||
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
if (!ld) return WLDAP32_LDAP_PARAM_ERROR;
|
||||||
return LDAP_SUCCESS;
|
return LDAP_SUCCESS; /* FIXME: do some checks */
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG ldap_cleanup( HANDLE instance )
|
ULONG ldap_cleanup( HANDLE instance )
|
||||||
|
@ -357,7 +357,7 @@ ULONG WLDAP32_ldap_result( WLDAP32_LDAP *ld, ULONG msgid, ULONG all,
|
||||||
|
|
||||||
TRACE( "(%p, 0x%08lx, 0x%08lx, %p, %p)\n", ld, msgid, all, timeout, res );
|
TRACE( "(%p, 0x%08lx, 0x%08lx, %p, %p)\n", ld, msgid, all, timeout, res );
|
||||||
|
|
||||||
if (!ld || !res) return ~0UL;
|
if (!ld || !res || msgid == ~0UL) return ~0UL;
|
||||||
ret = ldap_result( ld, msgid, all, (struct timeval *)timeout, res );
|
ret = ldap_result( ld, msgid, all, (struct timeval *)timeout, res );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -79,6 +79,7 @@ ULONG ldap_modifyW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[] )
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char *dnU = NULL;
|
char *dnU = NULL;
|
||||||
LDAPMod **modsU = NULL;
|
LDAPMod **modsU = NULL;
|
||||||
|
int msg;
|
||||||
|
|
||||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||||
|
|
||||||
|
@ -95,7 +96,13 @@ ULONG ldap_modifyW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[] )
|
||||||
if (!modsU) goto exit;
|
if (!modsU) goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_modify( ld, dn ? dnU : "", mods ? modsU : nullmods );
|
ret = ldap_modify_ext( ld, dn ? dnU : "", mods ? modsU : nullmods,
|
||||||
|
NULL, NULL, &msg );
|
||||||
|
|
||||||
|
if (ret == LDAP_SUCCESS)
|
||||||
|
ret = msg;
|
||||||
|
else
|
||||||
|
ret = ~0UL;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
@ -342,7 +349,7 @@ ULONG ldap_modify_sW( WLDAP32_LDAP *ld, PWCHAR dn, LDAPModW *mods[] )
|
||||||
if (!modsU) goto exit;
|
if (!modsU) goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_modify_s( ld, dn ? dnU : "", mods ? modsU : nullmods );
|
ret = ldap_modify_ext_s( ld, dn ? dnU : "", mods ? modsU : nullmods, NULL, NULL );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
|
|
@ -75,6 +75,7 @@ ULONG ldap_modrdnW( WLDAP32_LDAP *ld, PWCHAR dn, PWCHAR newdn )
|
||||||
ULONG ret = LDAP_NOT_SUPPORTED;
|
ULONG ret = LDAP_NOT_SUPPORTED;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char *dnU = NULL, *newdnU = NULL;
|
char *dnU = NULL, *newdnU = NULL;
|
||||||
|
int msg;
|
||||||
|
|
||||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||||
|
|
||||||
|
@ -90,7 +91,12 @@ ULONG ldap_modrdnW( WLDAP32_LDAP *ld, PWCHAR dn, PWCHAR newdn )
|
||||||
newdnU = strWtoU( newdn );
|
newdnU = strWtoU( newdn );
|
||||||
if (!newdnU) goto exit;
|
if (!newdnU) goto exit;
|
||||||
|
|
||||||
ret = ldap_modrdn( ld, dn ? dnU : "", newdnU );
|
ret = ldap_rename( ld, dn ? dnU : "", newdnU, NULL, 1, NULL, NULL, &msg );
|
||||||
|
|
||||||
|
if (ret == LDAP_SUCCESS)
|
||||||
|
ret = msg;
|
||||||
|
else
|
||||||
|
ret = ~0UL;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
@ -135,6 +141,7 @@ ULONG ldap_modrdn2W( WLDAP32_LDAP *ld, PWCHAR dn, PWCHAR newdn, INT delete )
|
||||||
ULONG ret = LDAP_NOT_SUPPORTED;
|
ULONG ret = LDAP_NOT_SUPPORTED;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char *dnU = NULL, *newdnU = NULL;
|
char *dnU = NULL, *newdnU = NULL;
|
||||||
|
int msg;
|
||||||
|
|
||||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||||
|
|
||||||
|
@ -150,7 +157,12 @@ ULONG ldap_modrdn2W( WLDAP32_LDAP *ld, PWCHAR dn, PWCHAR newdn, INT delete )
|
||||||
newdnU = strWtoU( newdn );
|
newdnU = strWtoU( newdn );
|
||||||
if (!newdnU) goto exit;
|
if (!newdnU) goto exit;
|
||||||
|
|
||||||
ret = ldap_modrdn2( ld, dn ? dnU : "", newdnU, delete );
|
ret = ldap_rename( ld, dn ? dnU : "", newdnU, NULL, delete, NULL, NULL, &msg );
|
||||||
|
|
||||||
|
if (ret == LDAP_SUCCESS)
|
||||||
|
ret = msg;
|
||||||
|
else
|
||||||
|
ret = ~0UL;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
@ -210,7 +222,7 @@ ULONG ldap_modrdn2_sW( WLDAP32_LDAP *ld, PWCHAR dn, PWCHAR newdn, INT delete )
|
||||||
newdnU = strWtoU( newdn );
|
newdnU = strWtoU( newdn );
|
||||||
if (!newdnU) goto exit;
|
if (!newdnU) goto exit;
|
||||||
|
|
||||||
ret = ldap_modrdn2_s( ld, dn ? dnU : "", newdnU, delete );
|
ret = ldap_rename_s( ld, dn ? dnU : "", newdnU, NULL, delete, NULL, NULL );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
@ -270,7 +282,7 @@ ULONG ldap_modrdn_sW( WLDAP32_LDAP *ld, PWCHAR dn, PWCHAR newdn )
|
||||||
newdnU = strWtoU( newdn );
|
newdnU = strWtoU( newdn );
|
||||||
if (!newdnU) goto exit;
|
if (!newdnU) goto exit;
|
||||||
|
|
||||||
ret = ldap_modrdn_s( ld, dn ? dnU : "", newdnU );
|
ret = ldap_rename_s( ld, dn ? dnU : "", newdnU, NULL, 1, NULL, NULL );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( dnU );
|
strfreeU( dnU );
|
||||||
|
|
|
@ -217,13 +217,13 @@ ULONG ldap_get_optionW( WLDAP32_LDAP *ld, int option, void *value )
|
||||||
infoW->ldapai_vendor_name = strUtoW( infoU.ldapai_vendor_name );
|
infoW->ldapai_vendor_name = strUtoW( infoU.ldapai_vendor_name );
|
||||||
if (!infoW->ldapai_vendor_name)
|
if (!infoW->ldapai_vendor_name)
|
||||||
{
|
{
|
||||||
ldap_value_free( infoU.ldapai_extensions );
|
ldap_memvfree( (void **)infoU.ldapai_extensions );
|
||||||
return WLDAP32_LDAP_NO_MEMORY;
|
return WLDAP32_LDAP_NO_MEMORY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
infoW->ldapai_vendor_version = infoU.ldapai_vendor_version;
|
infoW->ldapai_vendor_version = infoU.ldapai_vendor_version;
|
||||||
|
|
||||||
ldap_value_free( infoU.ldapai_extensions );
|
ldap_memvfree( (void **)infoU.ldapai_extensions );
|
||||||
ldap_memfree( infoU.ldapai_vendor_name );
|
ldap_memfree( infoU.ldapai_vendor_name );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,6 +85,7 @@ ULONG ldap_searchW( WLDAP32_LDAP *ld, PWCHAR base, ULONG scope, PWCHAR filter,
|
||||||
ULONG ret = LDAP_NOT_SUPPORTED;
|
ULONG ret = LDAP_NOT_SUPPORTED;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char *baseU = NULL, *filterU = NULL, **attrsU = NULL;
|
char *baseU = NULL, *filterU = NULL, **attrsU = NULL;
|
||||||
|
int msg;
|
||||||
|
|
||||||
ret = WLDAP32_LDAP_NO_MEMORY;
|
ret = WLDAP32_LDAP_NO_MEMORY;
|
||||||
|
|
||||||
|
@ -106,7 +107,13 @@ ULONG ldap_searchW( WLDAP32_LDAP *ld, PWCHAR base, ULONG scope, PWCHAR filter,
|
||||||
if (!attrsU) goto exit;
|
if (!attrsU) goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_search( ld, baseU, scope, filterU, attrsU, attrsonly );
|
ret = ldap_search_ext( ld, baseU, scope, filterU, attrsU, attrsonly,
|
||||||
|
NULL, NULL, NULL, 0, &msg );
|
||||||
|
|
||||||
|
if (ret == LDAP_SUCCESS)
|
||||||
|
ret = msg;
|
||||||
|
else
|
||||||
|
ret = ~0UL;
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( baseU );
|
strfreeU( baseU );
|
||||||
|
@ -395,7 +402,8 @@ ULONG ldap_search_sW( WLDAP32_LDAP *ld, PWCHAR base, ULONG scope, PWCHAR filter,
|
||||||
if (!attrsU) goto exit;
|
if (!attrsU) goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_search_s( ld, baseU, scope, filterU, attrsU, attrsonly, res );
|
ret = ldap_search_ext_s( ld, baseU, scope, filterU, attrsU, attrsonly,
|
||||||
|
NULL, NULL, NULL, 0, res );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( baseU );
|
strfreeU( baseU );
|
||||||
|
@ -476,8 +484,8 @@ ULONG ldap_search_stW( WLDAP32_LDAP *ld, const PWCHAR base, ULONG scope,
|
||||||
if (!attrsU) goto exit;
|
if (!attrsU) goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldap_search_st( ld, baseU, scope, filterU, attrsU, attrsonly,
|
ret = ldap_search_ext_s( ld, baseU, scope, filterU, attrsU, attrsonly,
|
||||||
(struct timeval *)timeout, res );
|
NULL, NULL, (struct timeval *)timeout, 0, res );
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
strfreeU( baseU );
|
strfreeU( baseU );
|
||||||
|
|
|
@ -61,10 +61,10 @@ ULONG ldap_count_valuesA( PCHAR *vals )
|
||||||
|
|
||||||
TRACE( "(%p)\n", vals );
|
TRACE( "(%p)\n", vals );
|
||||||
|
|
||||||
if (vals) {
|
if (!vals) return 0;
|
||||||
valsW = strarrayAtoW( vals );
|
|
||||||
if (!valsW) return WLDAP32_LDAP_NO_MEMORY;
|
valsW = strarrayAtoW( vals );
|
||||||
}
|
if (!valsW) return WLDAP32_LDAP_NO_MEMORY;
|
||||||
|
|
||||||
ret = ldap_count_valuesW( valsW );
|
ret = ldap_count_valuesW( valsW );
|
||||||
strarrayfreeW( valsW );
|
strarrayfreeW( valsW );
|
||||||
|
@ -77,17 +77,18 @@ ULONG ldap_count_valuesW( PWCHAR *vals )
|
||||||
{
|
{
|
||||||
ULONG ret = LDAP_NOT_SUPPORTED;
|
ULONG ret = LDAP_NOT_SUPPORTED;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char **valsU = NULL;
|
WCHAR **p = vals;
|
||||||
|
|
||||||
TRACE( "(%p)\n", vals );
|
TRACE( "(%p)\n", vals );
|
||||||
|
|
||||||
if (vals) {
|
if (!vals) return 0;
|
||||||
valsU = strarrayWtoU( vals );
|
|
||||||
if (!valsU) return WLDAP32_LDAP_NO_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = ldap_count_values( valsU );
|
ret = 0;
|
||||||
strarrayfreeU( valsU );
|
while (*p)
|
||||||
|
{
|
||||||
|
ret++;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -116,11 +117,59 @@ PCHAR *ldap_get_valuesA( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *entry, PCHAR att
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *bv2str( struct berval *bv )
|
||||||
|
{
|
||||||
|
char *str = NULL;
|
||||||
|
unsigned int len = bv->bv_len;
|
||||||
|
|
||||||
|
str = HeapAlloc( GetProcessHeap(), 0, len + 1 );
|
||||||
|
if (str)
|
||||||
|
{
|
||||||
|
memcpy( str, bv->bv_val, len );
|
||||||
|
str[len] = '\0';
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char **bv2str_array( struct berval **bv )
|
||||||
|
{
|
||||||
|
unsigned int len = 0, i = 0;
|
||||||
|
struct berval **p = bv;
|
||||||
|
char **str;
|
||||||
|
|
||||||
|
while (*p)
|
||||||
|
{
|
||||||
|
len++;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
str = HeapAlloc( GetProcessHeap(), 0, (len + 1) * sizeof(char *) );
|
||||||
|
if (!str) return NULL;
|
||||||
|
|
||||||
|
p = bv;
|
||||||
|
while (*p)
|
||||||
|
{
|
||||||
|
str[i] = bv2str( *p );
|
||||||
|
if (!str[i])
|
||||||
|
{
|
||||||
|
for (--i; i >= 0; i--)
|
||||||
|
HeapFree( GetProcessHeap(), 0, str[i] );
|
||||||
|
|
||||||
|
HeapFree( GetProcessHeap(), 0, str );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
str[i] = NULL;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
PWCHAR *ldap_get_valuesW( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *entry, PWCHAR attr )
|
PWCHAR *ldap_get_valuesW( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *entry, PWCHAR attr )
|
||||||
{
|
{
|
||||||
PWCHAR *ret = NULL;
|
PWCHAR *ret = NULL;
|
||||||
#ifdef HAVE_LDAP
|
#ifdef HAVE_LDAP
|
||||||
char *attrU = NULL, **retU;
|
char *attrU = NULL, **retU;
|
||||||
|
struct berval **bv;
|
||||||
|
|
||||||
TRACE( "(%p, %p, %s)\n", ld, entry, debugstr_w(attr) );
|
TRACE( "(%p, %p, %s)\n", ld, entry, debugstr_w(attr) );
|
||||||
|
|
||||||
|
@ -129,10 +178,13 @@ PWCHAR *ldap_get_valuesW( WLDAP32_LDAP *ld, WLDAP32_LDAPMessage *entry, PWCHAR a
|
||||||
attrU = strWtoU( attr );
|
attrU = strWtoU( attr );
|
||||||
if (!attrU) return NULL;
|
if (!attrU) return NULL;
|
||||||
|
|
||||||
retU = ldap_get_values( ld, entry, attrU );
|
bv = ldap_get_values_len( ld, entry, attrU );
|
||||||
|
|
||||||
|
retU = bv2str_array( bv );
|
||||||
ret = strarrayUtoW( retU );
|
ret = strarrayUtoW( retU );
|
||||||
ldap_value_free( retU );
|
|
||||||
|
ldap_value_free_len( bv );
|
||||||
|
strarrayfreeU( retU );
|
||||||
strfreeU( attrU );
|
strfreeU( attrU );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue