Commit 8681c66e authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

PR: 1890

Submitted by: "Green, Paul" <Paul.Green@stratus.com>
Approved by: steve@openssl.org

Fixes to --with-zlib-include and --with-zlib-lib and init PRNG for VOS.
parent 69a0034e
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -1217,9 +1217,16 @@ if ($zlib)
	{
	$cflags = "-DZLIB $cflags";
	if (defined($disabled{"zlib-dynamic"}))
		{
		if (defined($withargs{"zlib-lib"}))
			{
			$lflags = "$lflags -L" . $withargs{"zlib-lib"} . " -lz";
			}
		else
			{
			$lflags = "$lflags -lz";
			}
		}
	else
		{
		$cflags = "-DZLIB_SHARED $cflags";
+1 −0
Original line number Diff line number Diff line
@@ -188,6 +188,7 @@ BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
		MAKEDEPPROG='$(MAKEDEPPROG)'			\
		SHARED_LDFLAGS='$(SHARED_LDFLAGS)'		\
		KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)'	\
		ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)'	\
		EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)'	\
		SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)'	\
		PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)'	\
+2 −2
Original line number Diff line number Diff line
@@ -5,9 +5,9 @@
DIR=		crypto
TOP=		..
CC=		cc
INCLUDE=	-I. -I$(TOP) -I../include
INCLUDE=	-I. -I$(TOP) -I../include $(ZLIB_INCLUDE)
# INCLUDES targets sudbirs!
INCLUDES=	-I.. -I../.. -I../asn1 -I../evp -I../../include
INCLUDES=	-I.. -I../.. -I../asn1 -I../evp -I../../include $(ZLIB_INCLUDE)
CFLAG=		-g
MAKEDEPPROG=	makedepend
MAKEDEPEND=	$(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
+44 −1
Original line number Diff line number Diff line
@@ -133,7 +133,50 @@
# define FD_SETSIZE (8*sizeof(fd_set))
#endif

#ifdef __OpenBSD__
#ifdef __VOS__
int RAND_poll(void)
{
	unsigned char buf[ENTROPY_NEEDED];
	pid_t curr_pid;
	uid_t curr_uid;
	static int first=1;
	int i;
	long rnd = 0;
	struct timespec ts;
	unsigned seed;

/* The VOS random() function starts from a static seed so its
   initial value is predictable.  If random() returns the
   initial value, reseed it with dynamic data.  The VOS
   real-time clock has a granularity of 1 nsec so it should be
   reasonably difficult to predict its exact value.  Do not
   gratuitously reseed the PRNG because other code in this
   process or thread may be using it.  */

	if (first) {
		first = 0;
		rnd = random ();
		if (rnd == 1804289383) {
			clock_gettime (CLOCK_REALTIME, &ts);
			curr_pid = getpid();
			curr_uid = getuid();
			seed = ts.tv_sec ^ ts.tv_nsec ^ curr_pid ^ curr_uid;
			srandom (seed);
		}
	}

	for (i = 0; i < sizeof(buf); i++) {
		if (i % 4 == 0)
			rnd = random();
		buf[i] = rnd;
		rnd >>= 8;
	}
	RAND_add(buf, sizeof(buf), ENTROPY_NEEDED);
	memset(buf, 0, sizeof(buf));

	return 1;
}
#elif defined __OpenBSD__
int RAND_poll(void)
{
	u_int32_t rnd = 0, i;