]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/init.c
Assume TLS is properly configured if any one of
[openldap] / libraries / libldap / init.c
index 4c992ac53f3a18911e181ee3e924df18a4f79b51..613bd93c57152bf35df9241e1ee82a5a69d63a3d 100644 (file)
@@ -1,8 +1,18 @@
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2005 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
+
 #include "portable.h"
 
 #include <stdio.h>
@@ -13,7 +23,9 @@
 #include <ac/ctype.h>
 #include <ac/time.h>
 
+#ifdef HAVE_LIMITS_H
 #include <limits.h>
+#endif
 
 #include "ldap-int.h"
 #include "ldap_defaults.h"
@@ -81,19 +93,24 @@ static const struct ol_attribute {
 #endif
 
 #ifdef HAVE_TLS
-       {0, ATTR_TLS,           "TLS",                  NULL,   LDAP_OPT_X_TLS},
-       {1, ATTR_TLS,           "TLS_CERT",             NULL,   LDAP_OPT_X_TLS_CERTFILE},
-       {1, ATTR_TLS,           "TLS_KEY",              NULL,   LDAP_OPT_X_TLS_KEYFILE},
-       {0, ATTR_TLS,           "TLS_CACERT",   NULL,   LDAP_OPT_X_TLS_CACERTFILE},
-       {0, ATTR_TLS,           "TLS_CACERTDIR",NULL,   LDAP_OPT_X_TLS_CACERTDIR},
-       {0, ATTR_TLS,           "TLS_REQCERT",  NULL,   LDAP_OPT_X_TLS_REQUIRE_CERT},
-       {0, ATTR_TLS,           "TLS_RANDFILE", NULL,   LDAP_OPT_X_TLS_RANDOM_FILE},
+       {1, ATTR_TLS,   "TLS_CERT",                     NULL,   LDAP_OPT_X_TLS_CERTFILE},
+       {1, ATTR_TLS,   "TLS_KEY",                      NULL,   LDAP_OPT_X_TLS_KEYFILE},
+       {0, ATTR_TLS,   "TLS_CACERT",           NULL,   LDAP_OPT_X_TLS_CACERTFILE},
+       {0, ATTR_TLS,   "TLS_CACERTDIR",        NULL,   LDAP_OPT_X_TLS_CACERTDIR},
+       {0, ATTR_TLS,   "TLS_REQCERT",          NULL,   LDAP_OPT_X_TLS_REQUIRE_CERT},
+       {0, ATTR_TLS,   "TLS_RANDFILE",         NULL,   LDAP_OPT_X_TLS_RANDOM_FILE},
+       {0, ATTR_TLS,   "TLS_CIPHER_SUITE",     NULL,   LDAP_OPT_X_TLS_CIPHER_SUITE},
+
+#ifdef HAVE_OPENSSL_CRL
+       {0, ATTR_TLS,   "TLS_CRLCHECK",         NULL,   LDAP_OPT_X_TLS_CRLCHECK},
+#endif
+        
 #endif
 
        {0, ATTR_NONE,          NULL,           NULL,   0}
 };
 
-#define MAX_LDAP_ATTR_LEN  sizeof("TLS_CACERTDIR")
+#define MAX_LDAP_ATTR_LEN  sizeof("TLS_CIPHER_SUITE")
 #define MAX_LDAP_ENV_PREFIX_LEN 8
 
 static void openldap_ldap_init_w_conf(
@@ -115,12 +132,7 @@ static void openldap_ldap_init_w_conf(
                return;
        }
 
-#ifdef NEW_LOGGING
-       LDAP_LOG ( CONFIG, DETAIL1, 
-               "openldap_init_w_conf: trying %s\n", file, 0, 0 );
-#else
        Debug(LDAP_DEBUG_TRACE, "ldap_init: trying %s\n", file, 0, 0);
-#endif
 
        fp = fopen(file, "r");
        if(fp == NULL) {
@@ -128,11 +140,7 @@ static void openldap_ldap_init_w_conf(
                return;
        }
 
-#ifdef NEW_LOGGING
-       LDAP_LOG ( CONFIG, DETAIL1, "openldap_init_w_conf: using %s\n", file, 0, 0 );
-#else
        Debug(LDAP_DEBUG_TRACE, "ldap_init: using %s\n", file, 0, 0);
-#endif
 
        while((start = fgets(linebuf, sizeof(linebuf), fp)) != NULL) {
                /* skip lines starting with '#' */
@@ -260,22 +268,12 @@ static void openldap_ldap_init_w_userconf(const char *file)
        home = getenv("HOME");
 
        if (home != NULL) {
-#ifdef NEW_LOGGING
-       LDAP_LOG ( CONFIG, ARGS, 
-               "openldap_init_w_userconf: HOME env is %s\n", home, 0, 0 );
-#else
                Debug(LDAP_DEBUG_TRACE, "ldap_init: HOME env is %s\n",
                      home, 0, 0);
-#endif
                path = LDAP_MALLOC(strlen(home) + strlen(file) + sizeof( LDAP_DIRSEP "."));
        } else {
-#ifdef NEW_LOGGING
-       LDAP_LOG ( CONFIG, ARGS, "openldap_init_w_userconf: HOME env is NULL\n",
-               0, 0, 0 );
-#else
                Debug(LDAP_DEBUG_TRACE, "ldap_init: HOME env is NULL\n",
                      0, 0, 0);
-#endif
        }
 
        if(home != NULL && path != NULL) {
@@ -399,6 +397,11 @@ ldap_int_destroy_global_options(void)
 {
        struct ldapoptions *gopts = LDAP_INT_GLOBAL_OPT();
 
+       if ( gopts == NULL )
+               return;
+
+       gopts->ldo_valid = LDAP_UNINITIALIZED;
+
        if ( gopts->ldo_defludp ) {
                ldap_free_urllist( gopts->ldo_defludp );
                gopts->ldo_defludp = NULL;
@@ -466,6 +469,11 @@ void ldap_int_initialize_global_options( struct ldapoptions *gopts, int *dbglvl
                SASL_SEC_NOPLAINTEXT | SASL_SEC_NOANONYMOUS;
 #endif
 
+#ifdef HAVE_TLS
+       gopts->ldo_tls_connect_cb = NULL;
+       gopts->ldo_tls_connect_arg = NULL;
+#endif
+
        gopts->ldo_valid = LDAP_INITIALIZED;
        return;
 }
@@ -523,8 +531,10 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
        || defined(HAVE_TLS) || defined(HAVE_CYRUS_SASL)
        ldap_int_hostname = ldap_pvt_get_fqdn( ldap_int_hostname );
 #endif
-       if ( ldap_int_tblsize == 0 )
-               ldap_int_ip_init();
+
+#ifndef HAVE_POLL
+       if ( ldap_int_tblsize == 0 ) ldap_int_ip_init();
+#endif
 
        ldap_int_initialize_global_options(gopts, NULL);
 
@@ -553,53 +563,27 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
                char *altfile = getenv(LDAP_ENV_PREFIX "CONF");
 
                if( altfile != NULL ) {
-#ifdef NEW_LOGGING
-                       LDAP_LOG ( CONFIG, DETAIL1, 
-                               "openldap_init_w_userconf: %sCONF env is %s\n",
-                               LDAP_ENV_PREFIX, altfile, 0 );
-#else
                        Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is %s\n",
                              LDAP_ENV_PREFIX "CONF", altfile, 0);
-#endif
                        openldap_ldap_init_w_sysconf( altfile );
                }
                else
-#ifdef NEW_LOGGING
-                       LDAP_LOG ( CONFIG, DETAIL1, 
-                               "openldap_init_w_userconf: %sCONF env is NULL\n",
-                               LDAP_ENV_PREFIX, 0, 0 );
-#else
                        Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is NULL\n",
                              LDAP_ENV_PREFIX "CONF", 0, 0);
-#endif
        }
 
        {
                char *altfile = getenv(LDAP_ENV_PREFIX "RC");
 
                if( altfile != NULL ) {
-#ifdef NEW_LOGGING
-                       LDAP_LOG ( CONFIG, DETAIL1, 
-                               "openldap_init_w_userconf: %sRC env is %s\n",
-                               LDAP_ENV_PREFIX, altfile, 0 );
-#else
                        Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is %s\n",
                              LDAP_ENV_PREFIX "RC", altfile, 0);
-#endif
                        openldap_ldap_init_w_userconf( altfile );
                }
                else
-#ifdef NEW_LOGGING
-                       LDAP_LOG ( CONFIG, DETAIL1, 
-                               "openldap_init_w_userconf: %sRC env is NULL\n",
-                               LDAP_ENV_PREFIX, 0, 0 );
-#else
                        Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is NULL\n",
                              LDAP_ENV_PREFIX "RC", 0, 0);
-#endif
        }
 
        openldap_ldap_init_w_env(gopts, NULL);
-
-       ldap_int_sasl_init();
 }