X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=crypto%2Fo_init.c;h=128f70bd84da2983dac42337dfd6fe30116e5a7d;hb=c32b9dcac2d70f3868b4b22fd7be0e5ccd854c52;hp=b7f8d10fa0cbfce61a804380ce69c357e2e0f833;hpb=05e24c87dd1428809d6eaebf754b472a6cb4bb50;p=oweals%2Fopenssl.git diff --git a/crypto/o_init.c b/crypto/o_init.c index b7f8d10fa0..128f70bd84 100644 --- a/crypto/o_init.c +++ b/crypto/o_init.c @@ -1,5 +1,5 @@ -/* o_init.c */ -/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL +/* + * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL * project. */ /* ==================================================================== @@ -10,7 +10,7 @@ * are met: * * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in @@ -55,79 +55,25 @@ #include #include #ifdef OPENSSL_FIPS -#include -#include +# include +# include #endif -#if defined(__GNUC__) && __GNUC__>=2 - void OPENSSL_init(void) __attribute__((constructor)); - /* Most commonly this results in pointer to OPENSSL_init to be dropped - * to .ctors segment, which is traversed by GCC crtbegin.o upon - * program startup. Except on a.out OpenBSD where it results in - * _GLOBAL_$I$init() {init();} being auto-generated by - * compiler... But one way or another this is believed to cover - * *all* GCC targets. */ -#elif defined(_MSC_VER) -# ifdef _WINDLL - __declspec(dllexport) /* this is essentially cosmetics... */ -# endif - void OPENSSL_init(void); - static int init_wrapper(void) { OPENSSL_init(); return 0; } -# ifdef _WIN64 -# pragma section(".CRT$XCU",read) - __declspec(allocate(".CRT$XCU")) -# else -# pragma data_seg(".CRT$XCU") -# endif - static int (*p)(void) = init_wrapper; - /* This results in pointer to init to appear in .CRT segment, - * which is traversed by Visual C run-time initialization code. - * This applies to both Win32 and [all flavors of] Win64. */ -# pragma data_seg() -#elif defined(__SUNPRO_C) - void OPENSSL_init(void); -# pragma init(OPENSSL_init) - /* This results in a call to init to appear in .init segment. */ -#elif defined(__DECC) && (defined(__VMS) || defined(VMS)) - void OPENSSL_init(void); -# pragma __nostandard - globaldef { "LIB$INITIALIZ" } readonly _align (LONGWORD) - int spare[8] = {0}; - globaldef { "LIB$INITIALIZE" } readonly _align (LONGWORD) - void (*x_OPENSSL_init)(void) = OPENSSL_init; - /* Refer to LIB$INITIALIZE to ensure it exists in the image. */ - int lib$initialize(); - globaldef int (*lib_init_ref)() = lib$initialize; -# pragma __standard -#elif 0 - The rest has to be taken care of through command line: - - -Wl,-init,OPENSSL_init on OSF1 and IRIX - -Wl,+init,OPENSSL_init on HP-UX - -Wl,-binitfini:OPENSSL_init on AIX - - On ELF platforms this results in a call to OPENSSL_init to appear in - .init segment... -#endif - -/* Perform any essential OpenSSL initialization operations. - * Currently only sets FIPS callbacks +/* + * Perform any essential OpenSSL initialization operations. Currently only + * sets FIPS callbacks */ void OPENSSL_init(void) - { - static int done = 0; - if (done) - return; - done = 1; +{ + static int done = 0; + if (done) + return; + done = 1; #ifdef OPENSSL_FIPS - FIPS_set_locking_callbacks(CRYPTO_lock, CRYPTO_add_lock); - FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata); - FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free); - RAND_init_fips(); -#endif -#if 0 - fprintf(stderr, "Called OPENSSL_init\n"); + FIPS_set_locking_callbacks(CRYPTO_lock, CRYPTO_add_lock); + FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata); + FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free); + RAND_init_fips(); #endif - } - +}