From: Andy Polyakov Date: Wed, 13 Apr 2005 08:46:35 +0000 (+0000) Subject: Introduce OPENSSL_NONPIC_relocated to denote relocated DLLs. X-Git-Tag: OpenSSL_0_9_8-beta1~13^2~196 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=51d28013db89b6ebecd0c89bd7f527aeddda0a98;p=oweals%2Fopenssl.git Introduce OPENSSL_NONPIC_relocated to denote relocated DLLs. --- 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; diff --git a/crypto/cryptlib.h b/crypto/cryptlib.h index 1cc3b728b3..93e162a993 100644 --- a/crypto/cryptlib.h +++ b/crypto/cryptlib.h @@ -97,6 +97,7 @@ void OPENSSL_cpuid_setup(void); extern unsigned long OPENSSL_ia32cap_P; void OPENSSL_showfatal(const char *,...); void *OPENSSL_stderr(void); +extern int OPENSSL_NONPIC_relocated; #ifdef __cplusplus }