#include "cryptlib.h"
#include <openssl/safestack.h>
-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
+#if defined(OPENSSL_SYS_WIN32)
static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */
#endif
#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__INTEL__) || \
- defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
+ defined(__x86_64) || defined(__x86_64__) || \
+ defined(_M_AMD64) || defined(_M_X64)
extern unsigned int OPENSSL_ia32cap_P[4];
unsigned int *OPENSSL_ia32cap_loc(void) { return OPENSSL_ia32cap_P; }
if (!sscanf(env+off,"%lli",(long long *)&vec)) vec = strtoul(env+off,NULL,0);
#endif
if (off) 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,':'))) {
- off = (env[1]=='~')?2:1;
- vec = strtoul(env+off,NULL,0);
- if (off>1) OPENSSL_ia32cap_P[2] &= ~vec;
- else OPENSSL_ia32cap_P[2] = vec;
+ 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
#endif
int OPENSSL_NONPIC_relocated = 0;
#if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ)
-void OPENSSL_cpuid_setup(unsigned int *) {}
+void OPENSSL_cpuid_setup(void) {}
#endif
#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(_WINDLL)
if ((h=GetStdHandle(STD_ERROR_HANDLE)) != NULL &&
GetFileType(h)!=FILE_TYPE_UNKNOWN)
- { /* must be console application */
+ {
+ /* must be console application */
int len;
DWORD out;
va_start (ap,fmta);
- len=_vsnprintf((char *)buf,sizeof(buf),fmt,ap);
+ len=_vsnprintf((char *)buf,sizeof(buf),fmta,ap);
WriteFile(h,buf,len<0?sizeof(buf):(DWORD)len,&out,NULL);
va_end (ap);
return;
#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
/* this -------------v--- guards NT-specific calls */
- if (GetVersion() < 0x80000000 && OPENSSL_isservice() > 0)
+ if (check_winnt() && OPENSSL_isservice() > 0)
{ HANDLE h = RegisterEventSource(0,_T("OPENSSL"));
const TCHAR *pmsg=buf;
ReportEvent(h,EVENTLOG_ERROR_TYPE,0,0,0,1,0,&pmsg,0);
abort();
#else
/* Win32 abort() customarily shows a dialog, but we just did that... */
+#if !defined(_WIN32_WCE)
raise(SIGABRT);
+#endif
_exit(3);
#endif
}
-#ifndef OPENSSL_FIPSCANISTER
void *OPENSSL_stderr(void) { return stderr; }
-#endif
+
+int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len)
+ {
+ size_t i;
+ const unsigned char *a = in_a;
+ const unsigned char *b = in_b;
+ unsigned char x = 0;
+
+ for (i = 0; i < len; i++)
+ x |= a[i] ^ b[i];
+
+ return x;
+ }