From 51d28013db89b6ebecd0c89bd7f527aeddda0a98 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Wed, 13 Apr 2005 08:46:35 +0000 Subject: Introduce OPENSSL_NONPIC_relocated to denote relocated DLLs. --- crypto/cryptlib.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'crypto/cryptlib.c') diff --git a/crypto/cryptlib.c b/crypto/cryptlib.c index b2674b2f22..717c030e4c 100644 --- a/crypto/cryptlib.c +++ b/crypto/cryptlib.c @@ -545,6 +545,7 @@ const char *CRYPTO_get_lock_name(int type) unsigned long OPENSSL_ia32cap_P=0; unsigned long *OPENSSL_ia32cap_loc(void) { return &OPENSSL_ia32cap_P; } +int OPENSSL_NONPIC_relocated=0; #if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY) #define OPENSSL_CPUID_SETUP @@ -589,6 +590,21 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, { case DLL_PROCESS_ATTACH: OPENSSL_cpuid_setup(); +#if defined(_WIN32_WINNT) + { + IMAGE_DOS_HEADER *dos_header = (IMAGE_DOS_HEADER *)hinstDLL; + IMAGE_NT_HEADERS *nt_headers; + + if (dos_header->e_magic==IMAGE_DOS_SIGNATURE) + { + nt_headers = (IMAGE_NT_HEADERS *)((char *)dos_header + + dos_header->e_lfanew); + if (nt_headers->Signature==IMAGE_NT_SIGNATURE && + histDLL!=(HINSTANCE)(nt_headers->OptionalHeader.ImageBase)) + OPENSSL_NONPIC_relocated=1; + } + } +#endif break; case DLL_THREAD_ATTACH: break; -- cgit v1.2.3