提交 2e230e86 编写于 作者: D Dr. Matthias St. Pierre

crypto/rand/rand_lib.c: fix undefined reference to `clock_gettime'

Some older glibc versions require the `-lrt` linker option for
resolving the reference to `clock_gettime'. Since it is not desired
to add new library dependencies in version 1.1.1, the call to
clock_gettime() is replaced by a call to gettimeofday() for the
moment. It will be added back in version 1.2.
Signed-off-by: NDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: NRichard Levitte <levitte@openssl.org>
Reviewed-by: NPaul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/5199)
上级 85d6ad34
...@@ -210,13 +210,15 @@ size_t rand_drbg_get_additional_data(unsigned char **pout, size_t max_len) ...@@ -210,13 +210,15 @@ size_t rand_drbg_get_additional_data(unsigned char **pout, size_t max_len)
size_t len; size_t len;
#ifdef OPENSSL_SYS_UNIX #ifdef OPENSSL_SYS_UNIX
pid_t pid; pid_t pid;
struct timespec ts; struct timeval tv;
#elif defined(OPENSSL_SYS_WIN32) #elif defined(OPENSSL_SYS_WIN32)
DWORD pid; DWORD pid;
FILETIME ft; FILETIME ft;
LARGE_INTEGER pc; LARGE_INTEGER pc;
#endif #endif
#ifdef OPENSSL_CPUID_OBJ
uint32_t tsc = 0; uint32_t tsc = 0;
#endif
pool = RAND_POOL_new(0, 0, max_len); pool = RAND_POOL_new(0, 0, max_len);
if (pool == NULL) if (pool == NULL)
...@@ -241,12 +243,10 @@ size_t rand_drbg_get_additional_data(unsigned char **pout, size_t max_len) ...@@ -241,12 +243,10 @@ size_t rand_drbg_get_additional_data(unsigned char **pout, size_t max_len)
#endif #endif
#ifdef OPENSSL_SYS_UNIX #ifdef OPENSSL_SYS_UNIX
if (tsc == 0 && clock_gettime(CLOCK_MONOTONIC, &ts) == 0) if (gettimeofday(&tv, NULL) == 0)
RAND_POOL_add(pool, (unsigned char *)&ts, sizeof(ts), 0); RAND_POOL_add(pool, (unsigned char *)&tv, sizeof(tv), 0);
if (clock_gettime(CLOCK_REALTIME, &ts) == 0)
RAND_POOL_add(pool, (unsigned char *)&ts, sizeof(ts), 0);
#elif defined(OPENSSL_SYS_WIN32) #elif defined(OPENSSL_SYS_WIN32)
if (tsc == 0 && QueryPerformanceCounter(&pc) != 0) if (QueryPerformanceCounter(&pc) != 0)
RAND_POOL_add(pool, (unsigned char *)&pc, sizeof(pc), 0); RAND_POOL_add(pool, (unsigned char *)&pc, sizeof(pc), 0);
GetSystemTimeAsFileTime(&ft); GetSystemTimeAsFileTime(&ft);
RAND_POOL_add(pool, (unsigned char *)&ft, sizeof(ft), 0); RAND_POOL_add(pool, (unsigned char *)&ft, sizeof(ft), 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册