projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bss_dgram.c: fix compilation failure and warning on Windows with
[oweals/openssl.git]
/
crypto
/
cryptlib.c
diff --git
a/crypto/cryptlib.c
b/crypto/cryptlib.c
index 8bc5189c162587335a1cac3e76c4b14edc45522d..c85fe5aa3d76688e3c7057e3213cc99acdf2388a 100644
(file)
--- a/
crypto/cryptlib.c
+++ b/
crypto/cryptlib.c
@@
-125,7
+125,7
@@
static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */
defined(__INTEL__) || \
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
defined(__INTEL__) || \
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
-unsigned int OPENSSL_ia32cap_P[2];
+
extern
unsigned int OPENSSL_ia32cap_P[2];
unsigned int *OPENSSL_ia32cap_loc(void) { return OPENSSL_ia32cap_P; }
#if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY)
unsigned int *OPENSSL_ia32cap_loc(void) { return OPENSSL_ia32cap_P; }
#if defined(OPENSSL_CPUID_OBJ) && !defined(OPENSSL_NO_ASM) && !defined(I386_ONLY)
@@
-144,12
+144,15
@@
void OPENSSL_cpuid_setup(void)
if (trigger) return;
trigger=1;
if (trigger) return;
trigger=1;
- if ((env=getenv("OPENSSL_ia32cap")))
+ if ((env=getenv("OPENSSL_ia32cap"))) {
+ int off = (env[0]=='~')?1:0;
#if defined(_WIN32)
#if defined(_WIN32)
- { if (!sscanf(env,"%I64i",&vec)) vec = strtoul(env,NULL,0); }
+ if (!sscanf(env+off,"%I64i",&vec)) vec = strtoul(env+off,NULL,0);
#else
#else
-
vec = strtoull(env
,NULL,0);
+
if (!sscanf(env+off,"%lli",(long long *)&vec)) vec = strtoul(env+off
,NULL,0);
#endif
#endif
+ if (off) vec = OPENSSL_ia32_cpuid()&~vec;
+ }
else
vec = OPENSSL_ia32_cpuid();
else
vec = OPENSSL_ia32_cpuid();
@@
-161,6
+164,8
@@
void OPENSSL_cpuid_setup(void)
OPENSSL_ia32cap_P[0] = (unsigned int)vec|(1<<10);
OPENSSL_ia32cap_P[1] = (unsigned int)(vec>>32);
}
OPENSSL_ia32cap_P[0] = (unsigned int)vec|(1<<10);
OPENSSL_ia32cap_P[1] = (unsigned int)(vec>>32);
}
+#else
+unsigned int OPENSSL_ia32cap_P[2];
#endif
#else
#endif
#else
@@
-208,9
+213,6
@@
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
-#ifndef OPENSSL_FIPS
- ERR_remove_state(0);
-#endif
break;
case DLL_PROCESS_DETACH:
break;
break;
case DLL_PROCESS_DETACH:
break;
@@
-293,8
+295,12
@@
void OPENSSL_showfatal (const char *fmta,...)
if ((h=GetStdHandle(STD_ERROR_HANDLE)) != NULL &&
GetFileType(h)!=FILE_TYPE_UNKNOWN)
{ /* must be console application */
if ((h=GetStdHandle(STD_ERROR_HANDLE)) != NULL &&
GetFileType(h)!=FILE_TYPE_UNKNOWN)
{ /* must be console application */
+ int len;
+ DWORD out;
+
va_start (ap,fmta);
va_start (ap,fmta);
- vfprintf (stderr,fmta,ap);
+ len=_vsnprintf((char *)buf,sizeof(buf),fmt,ap);
+ WriteFile(h,buf,len<0?sizeof(buf):(DWORD)len,&out,NULL);
va_end (ap);
return;
}
va_end (ap);
return;
}
@@
-375,4
+381,6
@@
void OpenSSLDie(const char *file,int line,const char *assertion)
#endif
}
#endif
}
+#ifndef OPENSSL_FIPSCANISTER
void *OPENSSL_stderr(void) { return stderr; }
void *OPENSSL_stderr(void) { return stderr; }
+#endif