summaryrefslogtreecommitdiffstats
path: root/lib/ldaputil/vtable.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ldaputil/vtable.c')
-rw-r--r--lib/ldaputil/vtable.c223
1 files changed, 1 insertions, 222 deletions
diff --git a/lib/ldaputil/vtable.c b/lib/ldaputil/vtable.c
index 0ead6c11..18ac0a4d 100644
--- a/lib/ldaputil/vtable.c
+++ b/lib/ldaputil/vtable.c
@@ -42,187 +42,8 @@
#include "ldaputili.h"
#include <ldap.h>
-#ifdef USE_LDAP_SSL
-#include <ldap_ssl.h>
-#endif
-
-#if defined( _WINDOWS ) && ! defined( _WIN32 )
-/* On 16-bit WINDOWS platforms, it's erroneous to call LDAP API functions
- * via a function pointer, since they are not declared LDAP_CALLBACK.
- * So, we define the following functions, which are LDAP_CALLBACK, and
- * simply delegate to their counterparts in the LDAP API.
- */
-
-#ifdef USE_LDAP_SSL
-static LDAP_CALL LDAP_CALLBACK LDAP*
-ldapuVd_ssl_init( const char *host, int port, int encrypted )
-{
- return ldapssl_init (host, port, encrypted);
-}
-#else
-static LDAP_CALL LDAP_CALLBACK LDAP*
-ldapuVd_init ( const char *host, int port )
-{
- return ldap_init (host, port);
-}
-#endif
-
-static LDAP_CALL LDAP_CALLBACK int
-ldapuVd_set_option( LDAP *ld, int opt, const void *val )
-{
- return ldap_set_option (ld, opt, val);
-}
-
-static LDAP_CALL LDAP_CALLBACK int
-ldapuVd_simple_bind_s( LDAP* ld, const char *username, const char *passwd )
-{
- return ldap_simple_bind_s (ld, username, passwd);
-}
-
-static LDAP_CALL LDAP_CALLBACK int
-ldapuVd_unbind( LDAP *ld )
-{
- return ldap_unbind (ld);
-}
-
-static LDAP_CALL LDAP_CALLBACK int
-ldapuVd_search_s( LDAP* ld, const char* baseDN, int scope, const char* filter,
- char** attrs, int attrsonly, LDAPMessage** result )
-{
- return ldap_search_s (ld, baseDN, scope, filter, attrs, attrsonly, result);
-}
-
-static LDAP_CALL LDAP_CALLBACK int
-ldapuVd_count_entries( LDAP* ld, LDAPMessage* msg )
-{
- return ldap_count_entries (ld, msg);
-}
-
-static LDAP_CALL LDAP_CALLBACK LDAPMessage*
-ldapuVd_first_entry( LDAP* ld, LDAPMessage* msg )
-{
- return ldap_first_entry (ld, msg);
-}
-
-static LDAP_CALL LDAP_CALLBACK LDAPMessage*
-ldapuVd_next_entry( LDAP* ld, LDAPMessage* entry )
-{
- return ldap_next_entry(ld, entry);
-}
-
-static LDAP_CALL LDAP_CALLBACK char*
-ldapuVd_get_dn( LDAP* ld, LDAPMessage* entry )
-{
- return ldap_get_dn (ld, entry);
-}
-
-static LDAP_CALL LDAP_CALLBACK char*
-ldapuVd_first_attribute( LDAP* ld, LDAPMessage* entry, BerElement** iter )
-{
- return ldap_first_attribute (ld, entry, iter);
-}
-
-static LDAP_CALL LDAP_CALLBACK char*
-ldapuVd_next_attribute( LDAP* ld, LDAPMessage* entry, BerElement* iter)
-{
- return ldap_next_attribute (ld, entry, iter);
-}
-
-static LDAP_CALL LDAP_CALLBACK char**
-ldapuVd_get_values( LDAP *ld, LDAPMessage *entry, const char *desc )
-{
- return ldap_get_values (ld, entry, desc);
-}
-
-static LDAP_CALL LDAP_CALLBACK struct berval**
-ldapuVd_get_values_len( LDAP *ld, LDAPMessage *entry, const char *desc )
-{
- return ldap_get_values_len (ld, entry, desc);
-}
-
-#else
-/* On other platforms, an LDAP API function can be called via a pointer. */
-#ifdef USE_LDAP_SSL
-#define ldapuVd_ssl_init ldapssl_init
-#else
-#define ldapuVd_init ldap_init
-#endif
-#define ldapuVd_set_option ldap_set_option
-#define ldapuVd_simple_bind_s ldap_simple_bind_s
-#define ldapuVd_unbind ldap_unbind
-#define ldapuVd_simple_bind_s ldap_simple_bind_s
-#define ldapuVd_unbind ldap_unbind
-#define ldapuVd_search_s ldap_search_s
-#define ldapuVd_count_entries ldap_count_entries
-#define ldapuVd_first_entry ldap_first_entry
-#define ldapuVd_next_entry ldap_next_entry
-#define ldapuVd_get_dn ldap_get_dn
-#define ldapuVd_first_attribute ldap_first_attribute
-#define ldapuVd_next_attribute ldap_next_attribute
-#define ldapuVd_get_values ldap_get_values
-#define ldapuVd_get_values_len ldap_get_values_len
-
-#endif
-
-/* Several functions in the standard LDAP API have no LDAP* parameter,
- but all the VTable functions do. Here are some little functions that
- make up the difference, by ignoring their LDAP* parameter:
-*/
-static int LDAP_CALL LDAP_CALLBACK
-ldapuVd_msgfree( LDAP *ld, LDAPMessage *chain )
-{
- return ldap_msgfree (chain);
-}
-
-static void LDAP_CALL LDAP_CALLBACK
-ldapuVd_memfree( LDAP *ld, void *dn )
-{
- ldap_memfree (dn);
-}
-
-static void LDAP_CALL LDAP_CALLBACK
-ldapuVd_ber_free( LDAP *ld, BerElement *ber, int freebuf )
-{
- ldap_ber_free (ber, freebuf);
-}
-
-static void LDAP_CALL LDAP_CALLBACK
-ldapuVd_value_free( LDAP *ld, char **vals )
-{
- ldap_value_free (vals);
-}
-static void LDAP_CALL LDAP_CALLBACK
-ldapuVd_value_free_len( LDAP *ld, struct berval **vals )
-{
- ldap_value_free_len (vals);
-}
-
-static LDAPUVTable_t ldapu_VTable = {
-/* By default, the VTable points to the standard LDAP API. */
-#ifdef USE_LDAP_SSL
- ldapuVd_ssl_init,
-#else
- ldapuVd_init,
-#endif
- ldapuVd_set_option,
- ldapuVd_simple_bind_s,
- ldapuVd_unbind,
- ldapuVd_search_s,
- ldapuVd_count_entries,
- ldapuVd_first_entry,
- ldapuVd_next_entry,
- ldapuVd_msgfree,
- ldapuVd_get_dn,
- ldapuVd_memfree,
- ldapuVd_first_attribute,
- ldapuVd_next_attribute,
- ldapuVd_ber_free,
- ldapuVd_get_values,
- ldapuVd_value_free,
- ldapuVd_get_values_len,
- ldapuVd_value_free_len
-};
+static LDAPUVTable_t ldapu_VTable = {};
/* Replace ldapu_VTable. Subsequently, ldaputil will call the
functions in 'from' (not the LDAP API) to access the directory.
@@ -235,26 +56,6 @@ ldapu_VTable_set (LDAPUVTable_t* from)
}
}
-#ifdef USE_LDAP_SSL
-LDAP*
-ldapu_ssl_init( const char *defhost, int defport, int defsecure )
-{
- if (ldapu_VTable.ldapuV_ssl_init) {
- return ldapu_VTable.ldapuV_ssl_init (defhost, defport, defsecure);
- }
- return NULL;
-}
-#else
-LDAP*
-ldapu_init( const char *defhost, int defport )
-{
- if (ldapu_VTable.ldapuV_init) {
- return ldapu_VTable.ldapuV_init (defhost, defport);
- }
- return NULL;
-}
-#endif
-
int
ldapu_set_option( LDAP *ld, int option, void *optdata )
{
@@ -422,28 +223,6 @@ ldapu_get_values_len( LDAP *ld, LDAPMessage *entry, const char *desc )
{
if (ldapu_VTable.ldapuV_get_values_len) {
return ldapu_VTable.ldapuV_get_values_len (ld, entry, desc);
- } else if (!ldapu_VTable.ldapuV_value_free_len
- && ldapu_VTable.ldapuV_get_values) {
- auto char** vals =
- ldapu_VTable.ldapuV_get_values (ld, entry, desc);
- if (vals) {
- auto struct berval** bvals = (struct berval**)
- ldapu_malloc ((ldap_count_values (vals) + 1)
- * sizeof(struct berval*));
- if (bvals) {
- auto char** val;
- auto struct berval** bval;
- for (val = vals, bval = bvals; *val; ++val, ++bval) {
- auto const size_t len = strlen(*val);
- *bval = (struct berval*) ldapu_malloc (sizeof(struct berval) + len);
- (*bval)->bv_len = len;
- (*bval)->bv_val = ((char*)(*bval)) + sizeof(struct berval);
- memcpy ((*bval)->bv_val, *val, len);
- }
- *bval = NULL;
- return bvals;
- }
- }
}
return NULL;
}