# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1488041842 -3600
# Node ID e3d3ebd417f476e96bd04822ef226e3233f4b48d
# Parent  a6eb3b6bf90332c91e73b90cb6d39475ea1095ba
util.crand: Throw error if OpenSSLs RNG is not seeded

diff -r a6eb3b6bf903 -r e3d3ebd417f4 util-src/crand.c
--- a/util-src/crand.c	Sat Feb 25 02:15:15 2017 +0100
+++ b/util-src/crand.c	Sat Feb 25 17:57:22 2017 +0100
@@ -67,6 +67,11 @@
 	arc4random_buf(buf, len);
 	ret = len;
 #elif defined(WITH_OPENSSL)
+	if(!RAND_status()) {
+		lua_pushliteral(L, "OpenSSL PRNG not seeded");
+		lua_error(L);
+	}
+
 	ret = RAND_bytes(buf, len);
 
 	if(ret == 1) {
@@ -87,6 +92,7 @@
 #if (LUA_VERSION_NUM > 501)
 	luaL_checkversion(L);
 #endif
+
 	lua_newtable(L);
 	lua_pushcfunction(L, Lrandom);
 	lua_setfield(L, -2, "bytes");
@@ -100,10 +106,6 @@
 #endif
 	lua_setfield(L, -2, "_source");
 
-#if defined(WITH_OPENSSL) && defined(_WIN32)
-	/* TODO Do we need to seed this on Windows? */
-#endif
-
 	return 1;
 }