Commit 0fc32b07 authored by Matt Caswell's avatar Matt Caswell
Browse files

The new init functions can now fail so shouldn't be void



The new init functions can fail if the library has already been stopped. We
should be able to indicate failure with a 0 return value.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 8bd8221b
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -172,8 +172,9 @@ static int apps_startup()
#endif

    /* Set non-default library initialisation settings */
    OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_ALL_BUILTIN
                        | OPENSSL_INIT_LOAD_CONFIG, NULL);
    if (!OPENSSL_init_crypto(OPENSSL_INIT_ENGINE_ALL_BUILTIN
                             | OPENSSL_INIT_LOAD_CONFIG, NULL))
        return 0;

    setup_ui_method();

+7 −3
Original line number Diff line number Diff line
@@ -97,7 +97,8 @@ err:

static async_ctx *async_get_ctx(void)
{
    OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL);
    if (!OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL))
        return NULL;
    return async_arch_get_ctx();
}

@@ -361,9 +362,12 @@ int ASYNC_init_thread(size_t max_size, size_t init_size)
        return 0;
    }

    OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL);
    if (!OPENSSL_init_crypto(OPENSSL_INIT_ASYNC, NULL)) {
        ASYNCerr(ASYNC_F_ASYNC_INIT_THREAD, ERR_R_NOT_INITED);
        return 0;
    }
    if (!ossl_init_thread_start(OPENSSL_INIT_THREAD_ASYNC)) {
        ASYNCerr(ASYNC_F_ASYNC_INIT_THREAD, ERR_R_MALLOC_FAILURE);
        ASYNCerr(ASYNC_F_ASYNC_INIT_THREAD, ERR_R_NOT_INITED);
        return 0;
    }

+5 −1
Original line number Diff line number Diff line
@@ -289,9 +289,13 @@ COMP_METHOD *COMP_zlib(void)
                && p_inflateInit_ && p_deflateEnd
                && p_deflate && p_deflateInit_ && p_zError)
                zlib_loaded++;

            if (!OPENSSL_init_crypto(OPENSSL_INIT_ZLIB, NULL)) {
                COMP_zlib_cleanup();
                return meth;
            }
            if (zlib_loaded)
                meth = &zlib_stateful_method;
            OPENSSL_init_crypto(OPENSSL_INIT_ZLIB, NULL);
        }
    }
#endif
+2 −1
Original line number Diff line number Diff line
@@ -894,8 +894,9 @@ ERR_STATE *ERR_get_state(void)
         * the first one that we just replaced.
         */
        ERR_STATE_free(tmpp);

        /* Ignore failures from these */
        OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL);
        /* Ignore failures from this */
        ossl_init_thread_start(OPENSSL_INIT_THREAD_ERR_STATE);
    }
    return ret;
+7 −2
Original line number Diff line number Diff line
@@ -110,7 +110,8 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name)
{
    const EVP_CIPHER *cp;

    OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL);
    if (!OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL))
        return NULL;

    cp = (const EVP_CIPHER *)OBJ_NAME_get(name, OBJ_NAME_TYPE_CIPHER_METH);
    return (cp);
@@ -120,7 +121,8 @@ const EVP_MD *EVP_get_digestbyname(const char *name)
{
    const EVP_MD *cp;

    OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL);
    if (!OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL))
        return NULL;

    cp = (const EVP_MD *)OBJ_NAME_get(name, OBJ_NAME_TYPE_MD_METH);
    return (cp);
@@ -166,6 +168,7 @@ void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph,
{
    struct doall_cipher dc;

    /* Ignore errors */
    OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL);

    dc.fn = fn;
@@ -179,6 +182,7 @@ void EVP_CIPHER_do_all_sorted(void (*fn) (const EVP_CIPHER *ciph,
{
    struct doall_cipher dc;

    /* Ignore errors */
    OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL);

    dc.fn = fn;
@@ -207,6 +211,7 @@ void EVP_MD_do_all(void (*fn) (const EVP_MD *md,
{
    struct doall_md dc;

    /* Ignore errors */
    OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL);

    dc.fn = fn;
Loading