Commit d582c98d authored by Andy Polyakov's avatar Andy Polyakov
Browse files

apps/speed.c: limit loop counters to 2^31 in order to avoid overflows

in performance calculations. For the moment there is only one code
fast enough to suffer from this: Intel AES-NI engine.
PR: 2096
parent 78a533cb
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -277,9 +277,11 @@ static DWORD WINAPI sleepy(VOID *arg)

static double Time_F(int s)
	{
	double ret;
	static HANDLE thr;

	if (s == START)
		{
		HANDLE	thr;
		schlock = 0;
		thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL);
		if (thr==NULL)
@@ -288,17 +290,25 @@ static double Time_F(int s)
			BIO_printf(bio_err,"unable to CreateThread (%d)",ret);
			ExitProcess(ret);
			}
		CloseHandle(thr);		/* detach the thread	*/
		while (!schlock) Sleep(0);	/* scheduler spinlock	*/
		ret = app_tminterval(s,usertime);
		}
	else
		{
		ret = app_tminterval(s,usertime);
		if (run) TerminateThread(thr,0);
		CloseHandle(thr);
		}

	return app_tminterval(s,usertime);
	return ret;
	}
#else

static double Time_F(int s)
	{
	return app_tminterval(s,usertime);
	double ret = app_tminterval(s,usertime);
	if (s == STOP) alarm(0);
	return ret;
	}
#endif

@@ -1454,7 +1464,7 @@ int MAIN(int argc, char **argv)
# error "You cannot disable DES on systems without SIGALRM."
#endif /* OPENSSL_NO_DES */
#else
#define COND(c)	(run)
#define COND(c)	(run && count<0x7fffffff)
#define COUNT(d) (count)
#ifndef _WIN32
	signal(SIGALRM,sig_done);