diff options
author | Werner Koch <[email protected]> | 2019-11-11 19:49:04 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-11-11 19:49:04 +0000 |
commit | 4c295646ba0e175743e6be13457308c1e6d21dd3 (patch) | |
tree | 9ecb5a1e4904fab2ac678c2b4e5890d4c8c0c39e /dirmngr/dirmngr_ldap.c | |
parent | gpg: Forbid the creation of SHA-1 third-party key signatures. (diff) | |
download | gnupg-4c295646ba0e175743e6be13457308c1e6d21dd3.tar.gz gnupg-4c295646ba0e175743e6be13457308c1e6d21dd3.zip |
dirmngr: Remove cruft from dirmngr_ldap
* configure.ac (USE_LDAPWRAPPER): Remove ac_define and conditional.
* dirmngr/Makefile.am: Remove USE_LDAPWRAPPER and considere true.
* dirmngr/ldap-wrapper-ce.c: Remove.
* dirmngr/ldap-wrapper.c: Remove USE_LDAPWRAPPER stuff. Minor chnages
to debug output.
* dirmngr/dirmngr_ldap.c: Remove USE_LDAPWRAPPER stuff. Remove
my_ldap macros.
(fetch_ldap) [W32]: Use ldap_sslinit.
--
Note that the ldap_sslinit stuff for Windows has not been tested.
This patch removes the whole wrapper-but-linked business because we do
not need it anymore. WindowsCE for which we used it is pretty dead.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'dirmngr/dirmngr_ldap.c')
-rw-r--r-- | dirmngr/dirmngr_ldap.c | 128 |
1 files changed, 42 insertions, 86 deletions
diff --git a/dirmngr/dirmngr_ldap.c b/dirmngr/dirmngr_ldap.c index 72d88b9be..82d4a6ebc 100644 --- a/dirmngr/dirmngr_ldap.c +++ b/dirmngr/dirmngr_ldap.c @@ -31,9 +31,6 @@ #include <errno.h> #include <sys/time.h> #include <unistd.h> -#ifndef USE_LDAPWRAPPER -# include <npth.h> -#endif #ifdef HAVE_W32_SYSTEM # include <winsock2.h> @@ -59,43 +56,12 @@ #include "../common/util.h" #include "../common/init.h" -/* With the ldap wrapper, there is no need for the npth_unprotect and leave - functions; thus we redefine them to nops. If we are not using the - ldap wrapper process we need to include the prototype for our - module's main function. */ -#ifdef USE_LDAPWRAPPER +/* There is no need for the npth_unprotect and leave functions here; + * thus we redefine them to nops. We keep them in the code just for + * the case we ever want to reuse parts of the code in npth programs. */ static void npth_unprotect (void) { } static void npth_protect (void) { } -#else -# include "./ldap-wrapper.h" -#endif -#ifdef HAVE_W32CE_SYSTEM -# include "w32-ldap-help.h" -# define my_ldap_init(a,b) \ - _dirmngr_ldap_init ((a), (b)) -# define my_ldap_simple_bind_s(a,b,c) \ - _dirmngr_ldap_simple_bind_s ((a),(b),(c)) -# define my_ldap_search_st(a,b,c,d,e,f,g,h) \ - _dirmngr_ldap_search_st ((a), (b), (c), (d), (e), (f), (g), (h)) -# define my_ldap_first_attribute(a,b,c) \ - _dirmngr_ldap_first_attribute ((a),(b),(c)) -# define my_ldap_next_attribute(a,b,c) \ - _dirmngr_ldap_next_attribute ((a),(b),(c)) -# define my_ldap_get_values_len(a,b,c) \ - _dirmngr_ldap_get_values_len ((a),(b),(c)) -# define my_ldap_free_attr(a) \ - xfree ((a)) -#else -# define my_ldap_init(a,b) ldap_init ((a), (b)) -# define my_ldap_simple_bind_s(a,b,c) ldap_simple_bind_s ((a), (b), (c)) -# define my_ldap_search_st(a,b,c,d,e,f,g,h) \ - ldap_search_st ((a), (b), (c), (d), (e), (f), (g), (h)) -# define my_ldap_first_attribute(a,b,c) ldap_first_attribute ((a),(b),(c)) -# define my_ldap_next_attribute(a,b,c) ldap_next_attribute ((a),(b),(c)) -# define my_ldap_get_values_len(a,b,c) ldap_get_values_len ((a),(b),(c)) -# define my_ldap_free_attr(a) ldap_memfree ((a)) -#endif #ifdef HAVE_W32_SYSTEM typedef LDAP_TIMEVAL my_ldap_timeval_t; @@ -192,7 +158,6 @@ static int process_url (my_opt_t myopt, const char *url); /* Function called by argparse.c to display information. */ -#ifdef USE_LDAPWRAPPER static const char * my_strusage (int level) { @@ -220,19 +185,11 @@ my_strusage (int level) } return p; } -#endif /*!USE_LDAPWRAPPER*/ int -#ifdef USE_LDAPWRAPPER main (int argc, char **argv) -#else -ldap_wrapper_main (char **argv, estream_t outstream) -#endif { -#ifndef USE_LDAPWRAPPER - int argc; -#endif ARGPARSE_ARGS pargs; int any_err = 0; char *p; @@ -245,7 +202,6 @@ ldap_wrapper_main (char **argv, estream_t outstream) early_system_init (); -#ifdef USE_LDAPWRAPPER set_strusage (my_strusage); log_set_prefix ("dirmngr_ldap", GPGRT_LOG_WITH_PREFIX); @@ -256,11 +212,6 @@ ldap_wrapper_main (char **argv, estream_t outstream) es_set_binary (es_stdout); myopt->outstream = es_stdout; -#else /*!USE_LDAPWRAPPER*/ - myopt->outstream = outstream; - for (argc=0; argv[argc]; argc++) - ; -#endif /*!USE_LDAPWRAPPER*/ /* LDAP defaults */ myopt->timeout.tv_sec = DEFAULT_LDAP_TIMEOUT; @@ -305,11 +256,7 @@ ldap_wrapper_main (char **argv, estream_t outstream) break; default : -#ifdef USE_LDAPWRAPPER pargs.err = ARGPARSE_PRINT_ERROR; -#else - pargs.err = ARGPARSE_PRINT_WARNING; /* No exit() please. */ -#endif break; } } @@ -339,17 +286,11 @@ ldap_wrapper_main (char **argv, estream_t outstream) if (myopt->port < 0 || myopt->port > 65535) log_error (_("invalid port number %d\n"), myopt->port); -#ifdef USE_LDAPWRAPPER if (log_get_errorcount (0)) exit (2); if (argc < 1) usage (1); -#else - /* All passed arguments should be fine in this case. */ - log_assert (argc); -#endif -#ifdef USE_LDAPWRAPPER if (myopt->alarm_timeout) { #ifndef HAVE_W32_SYSTEM @@ -366,7 +307,6 @@ ldap_wrapper_main (char **argv, estream_t outstream) log_fatal ("unable to register timeout handler\n"); #endif } -#endif /*USE_LDAPWRAPPER*/ for (; argc; argc--, argv++) if (process_url (myopt, *argv)) @@ -467,10 +407,10 @@ print_ldap_entries (my_opt_t myopt, LDAP *ld, LDAPMessage *msg, char *want_attr) } - for (npth_unprotect (), attr = my_ldap_first_attribute (ld, item, &berctx), + for (npth_unprotect (), attr = ldap_first_attribute (ld, item, &berctx), npth_protect (); attr; - npth_unprotect (), attr = my_ldap_next_attribute (ld, item, berctx), + npth_unprotect (), attr = ldap_next_attribute (ld, item, berctx), npth_protect ()) { struct berval **values; @@ -503,20 +443,20 @@ print_ldap_entries (my_opt_t myopt, LDAP *ld, LDAPMessage *msg, char *want_attr) *cp2 = ';'; if (cmpres) { - my_ldap_free_attr (attr); + ldap_memfree (attr); continue; /* Not found: Try next attribute. */ } } npth_unprotect (); - values = my_ldap_get_values_len (ld, item, attr); + values = ldap_get_values_len (ld, item, attr); npth_protect (); if (!values) { if (myopt->verbose) log_info (_("attribute '%s' not found\n"), attr); - my_ldap_free_attr (attr); + ldap_memfree (attr); continue; } @@ -546,7 +486,7 @@ print_ldap_entries (my_opt_t myopt, LDAP *ld, LDAPMessage *msg, char *want_attr) log_error (_("error writing to stdout: %s\n"), strerror (errno)); ldap_value_free_len (values); - my_ldap_free_attr (attr); + ldap_memfree (attr); ber_free (berctx, 0); return -1; } @@ -570,7 +510,7 @@ print_ldap_entries (my_opt_t myopt, LDAP *ld, LDAPMessage *msg, char *want_attr) log_error (_("error writing to stdout: %s\n"), strerror (errno)); ldap_value_free_len (values); - my_ldap_free_attr (attr); + ldap_memfree (attr); ber_free (berctx, 0); return -1; } @@ -582,7 +522,7 @@ print_ldap_entries (my_opt_t myopt, LDAP *ld, LDAPMessage *msg, char *want_attr) log_error (_("error writing to stdout: %s\n"), strerror (errno)); ldap_value_free_len (values); - my_ldap_free_attr (attr); + ldap_memfree (attr); ber_free (berctx, 0); return -1; } @@ -592,7 +532,7 @@ print_ldap_entries (my_opt_t myopt, LDAP *ld, LDAPMessage *msg, char *want_attr) break; /* Print only the first value. */ } ldap_value_free_len (values); - my_ldap_free_attr (attr); + ldap_memfree (attr); if (want_attr || !myopt->multi) break; /* We only want to return the first attribute. */ } @@ -617,6 +557,7 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) char *host, *dn, *filter, *attrs[2], *attr; int port; int ret; + int usetls; host = myopt->host? myopt->host : ludp->lud_host; port = myopt->port? myopt->port : ludp->lud_port; @@ -678,8 +619,24 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) set_timeout (myopt); - if (myopt->force_tls - || (ludp->lud_scheme && !strcmp (ludp->lud_scheme, "ldaps"))) + usetls = (myopt->force_tls + || (ludp->lud_scheme && !strcmp (ludp->lud_scheme, "ldaps"))); +#if HAVE_W32_SYSTEM + if (1) + { + npth_unprotect (); + ld = ldap_sslinit (host, port, usetls); + npth_protect (); + if (!ld) + { + ret = LdapGetLastError (); + log_error (_("LDAP init to '%s:%d' failed: %s\n"), + host, port, ldap_err2string (ret)); + return -1; + } + } +#else /*!W32*/ + if (usetls) { char *uri; @@ -690,7 +647,9 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) gpg_strerror (gpg_error_from_syserror ())); return -1; } + npth_unprotect (); ret = ldap_initialize (&ld, uri); + npth_protect (); if (ret) { log_error (_("LDAP init to '%s' failed: %s\n"), @@ -708,7 +667,7 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) * should really consider the supplied scheme and use only * ldap_initialize. */ npth_unprotect (); - ld = my_ldap_init (host, port); + ld = ldap_init (host, port); npth_protect (); if (!ld) { @@ -717,10 +676,11 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) return -1; } } +#endif /*!W32*/ npth_unprotect (); /* Fixme: Can we use MYOPT->user or is it shared with other theeads?. */ - ret = my_ldap_simple_bind_s (ld, myopt->user, myopt->pass); + ret = ldap_simple_bind_s (ld, myopt->user, myopt->pass); npth_protect (); #ifdef LDAP_VERSION3 if (ret == LDAP_PROTOCOL_ERROR) @@ -731,7 +691,7 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) log_info ("protocol error; retrying bind with v3 protocol\n"); npth_unprotect (); ldap_set_option (ld, LDAP_OPT_PROTOCOL_VERSION, &version); - ret = my_ldap_simple_bind_s (ld, myopt->user, myopt->pass); + ret = ldap_simple_bind_s (ld, myopt->user, myopt->pass); npth_protect (); } #endif @@ -745,11 +705,11 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) set_timeout (myopt); npth_unprotect (); - rc = my_ldap_search_st (ld, dn, ludp->lud_scope, filter, - myopt->multi && !myopt->attr && ludp->lud_attrs? - ludp->lud_attrs:attrs, - 0, - &myopt->timeout, &msg); + rc = ldap_search_st (ld, dn, ludp->lud_scope, filter, + myopt->multi && !myopt->attr && ludp->lud_attrs? + ludp->lud_attrs:attrs, + 0, + &myopt->timeout, &msg); npth_protect (); if (rc == LDAP_SIZELIMIT_EXCEEDED && myopt->multi) { @@ -761,12 +721,8 @@ fetch_ldap (my_opt_t myopt, const char *url, const LDAPURLDesc *ludp) } else if (rc) { -#ifdef HAVE_W32CE_SYSTEM - log_error ("searching '%s' failed: %d\n", url, rc); -#else log_error (_("searching '%s' failed: %s\n"), url, ldap_err2string (rc)); -#endif if (rc != LDAP_NO_SUCH_OBJECT) { /* FIXME: Need deinit (ld)? */ |