Update OpenSSL to version 1.0.2g
This commit is contained in:
@@ -653,7 +653,7 @@ const char *CRYPTO_get_lock_name(int type)
|
||||
defined(__x86_64) || defined(__x86_64__) || \
|
||||
defined(_M_AMD64) || defined(_M_X64)
|
||||
|
||||
unsigned int OPENSSL_ia32cap_P[2];
|
||||
extern unsigned int OPENSSL_ia32cap_P[4];
|
||||
unsigned long *OPENSSL_ia32cap_loc(void)
|
||||
{
|
||||
if (sizeof(long) == 4)
|
||||
@@ -663,6 +663,9 @@ unsigned long *OPENSSL_ia32cap_loc(void)
|
||||
* is 32-bit.
|
||||
*/
|
||||
OPENSSL_ia32cap_P[1] = 0;
|
||||
|
||||
OPENSSL_ia32cap_P[2] = 0;
|
||||
|
||||
return (unsigned long *)OPENSSL_ia32cap_P;
|
||||
}
|
||||
|
||||
@@ -676,7 +679,7 @@ typedef unsigned long long IA32CAP;
|
||||
void OPENSSL_cpuid_setup(void)
|
||||
{
|
||||
static int trigger = 0;
|
||||
IA32CAP OPENSSL_ia32_cpuid(void);
|
||||
IA32CAP OPENSSL_ia32_cpuid(unsigned int *);
|
||||
IA32CAP vec;
|
||||
char *env;
|
||||
|
||||
@@ -694,9 +697,23 @@ void OPENSSL_cpuid_setup(void)
|
||||
vec = strtoul(env + off, NULL, 0);
|
||||
# endif
|
||||
if (off)
|
||||
vec = OPENSSL_ia32_cpuid() & ~vec;
|
||||
vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P) & ~vec;
|
||||
else if (env[0] == ':')
|
||||
vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P);
|
||||
|
||||
OPENSSL_ia32cap_P[2] = 0;
|
||||
if ((env = strchr(env, ':'))) {
|
||||
unsigned int vecx;
|
||||
env++;
|
||||
off = (env[0] == '~') ? 1 : 0;
|
||||
vecx = strtoul(env + off, NULL, 0);
|
||||
if (off)
|
||||
OPENSSL_ia32cap_P[2] &= ~vecx;
|
||||
else
|
||||
OPENSSL_ia32cap_P[2] = vecx;
|
||||
}
|
||||
} else
|
||||
vec = OPENSSL_ia32_cpuid();
|
||||
vec = OPENSSL_ia32_cpuid(OPENSSL_ia32cap_P);
|
||||
|
||||
/*
|
||||
* |(1<<10) sets a reserved bit to signal that variable
|
||||
@@ -706,6 +723,8 @@ void OPENSSL_cpuid_setup(void)
|
||||
OPENSSL_ia32cap_P[0] = (unsigned int)vec | (1 << 10);
|
||||
OPENSSL_ia32cap_P[1] = (unsigned int)(vec >> 32);
|
||||
}
|
||||
# else
|
||||
unsigned int OPENSSL_ia32cap_P[4];
|
||||
# endif
|
||||
|
||||
#else
|
||||
@@ -857,8 +876,12 @@ void OPENSSL_showfatal(const char *fmta, ...)
|
||||
if ((h = GetStdHandle(STD_ERROR_HANDLE)) != NULL &&
|
||||
GetFileType(h) != FILE_TYPE_UNKNOWN) {
|
||||
/* must be console application */
|
||||
int len;
|
||||
DWORD out;
|
||||
|
||||
va_start(ap, fmta);
|
||||
vfprintf(stderr, fmta, ap);
|
||||
len = _vsnprintf((char *)buf, sizeof(buf), fmta, ap);
|
||||
WriteFile(h, buf, len < 0 ? sizeof(buf) : (DWORD) len, &out, NULL);
|
||||
va_end(ap);
|
||||
return;
|
||||
}
|
||||
@@ -981,7 +1004,9 @@ void OpenSSLDie(const char *file, int line, const char *assertion)
|
||||
/*
|
||||
* Win32 abort() customarily shows a dialog, but we just did that...
|
||||
*/
|
||||
# if !defined(_WIN32_WCE)
|
||||
raise(SIGABRT);
|
||||
# endif
|
||||
_exit(3);
|
||||
#endif
|
||||
}
|
||||
@@ -991,11 +1016,11 @@ void *OPENSSL_stderr(void)
|
||||
return stderr;
|
||||
}
|
||||
|
||||
int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len)
|
||||
int CRYPTO_memcmp(const volatile void *in_a, const volatile void *in_b, size_t len)
|
||||
{
|
||||
size_t i;
|
||||
const unsigned char *a = in_a;
|
||||
const unsigned char *b = in_b;
|
||||
const volatile unsigned char *a = in_a;
|
||||
const volatile unsigned char *b = in_b;
|
||||
unsigned char x = 0;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
|
||||
Reference in New Issue
Block a user