Diff

util-src/crand.c @ 7915:e3d3ebd417f4

util.crand: Throw error if OpenSSLs RNG is not seeded
author Kim Alvefur <zash@zash.se>
date Sat, 25 Feb 2017 17:57:22 +0100
parent 7832:d02ef0ae94af
child 7918:12e5a54907b6
line wrap: on
line diff
--- 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;
 }