Commit 511e7ce1 authored by William A. Rowe Jr's avatar William A. Rowe Jr
Browse files

  Solve a pretty horrific bug in SSLCryptoDevice and other places where
  the config cmd processors should be examining the SSL context.  We must
  initialize the SSL library before we can actually obtain any useful
  information from the SSL library.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@100107 13f79535-47bb-0310-9956-ffa450edef68
parent dfcc4c1a
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -235,8 +235,17 @@ static int ssl_hook_pre_config(apr_pool_t *pconf,
                               apr_pool_t *plog,
                               apr_pool_t *ptemp)
{
    /* Preregister the malloc callbacks so cmds can make library calls */
    /* We must register the library in full, to ensure our configuration 
     * code can successfully test the SSL environment.
     */
    CRYPTO_malloc_init();
    ERR_load_crypto_strings();
    OpenSSL_add_all_algorithms();
#if HAVE_ENGINE_LOAD_BUILTIN_ENGINES
    ENGINE_load_builtin_engines();
#endif
    OPENSSL_load_builtin_modules();
    SSL_load_error_strings();

    /* Register us to handle mod_log_config %c/%x variables */
    ssl_var_log_config_register(pconf);
+3 −14
Original line number Diff line number Diff line
@@ -106,18 +106,6 @@ static void ssl_add_version_components(apr_pool_t *p,
}


/*
 *  Initialize SSL library
 */
static void ssl_init_SSLLibrary(server_rec *s)
{
    ap_log_error(APLOG_MARK, APLOG_INFO, 0, s,
                 "Init: Initializing %s library", SSL_LIBRARY_NAME);

    SSL_load_error_strings();
    SSL_library_init();
}

/*
 * Handle the Temporary RSA Keys and DH Params
 */
@@ -274,12 +262,13 @@ int ssl_init_Module(apr_pool_t *p, apr_pool_t *plog,
    ssl_init_Engine(base_server, p);
#endif

    ssl_init_SSLLibrary(base_server);

#if APR_HAS_THREADS
    ssl_util_thread_setup(p);
#endif

    ap_log_error(APLOG_MARK, APLOG_INFO, 0, s,
                 "Init: Initialized %s library", SSL_LIBRARY_NAME);

    /*
     * Seed the Pseudo Random Number Generator (PRNG)
     * only need ptemp here; nothing inside allocated from the pool