[dovecot-cvs] dovecot/src/login-common ssl-proxy-openssl.c,1.16,1.17

cras at procontrol.fi cras at procontrol.fi
Wed Jun 18 05:12:34 EEST 2003


Update of /home/cvs/dovecot/src/login-common
In directory danu:/tmp/cvs-serv27616

Modified Files:
	ssl-proxy-openssl.c 
Log Message:
Make sure PRNG gets initialized before chrooting so it can open /dev/urandom.



Index: ssl-proxy-openssl.c
===================================================================
RCS file: /home/cvs/dovecot/src/login-common/ssl-proxy-openssl.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- ssl-proxy-openssl.c	11 Jun 2003 23:26:13 -0000	1.16
+++ ssl-proxy-openssl.c	18 Jun 2003 01:12:32 -0000	1.17
@@ -13,6 +13,7 @@
 #include <openssl/pem.h>
 #include <openssl/ssl.h>
 #include <openssl/err.h>
+#include <openssl/rand.h>
 
 #define SSL_CIPHER_LIST "ALL:!LOW"
 
@@ -403,6 +404,7 @@
 void ssl_proxy_init(void)
 {
 	const char *certfile, *keyfile, *paramfile;
+	char buf;
 
 	certfile = getenv("SSL_CERT_FILE");
 	keyfile = getenv("SSL_KEY_FILE");
@@ -439,6 +441,11 @@
 
 	if (SSL_CTX_need_tmp_RSA(ssl_ctx))
 		SSL_CTX_set_tmp_rsa_callback(ssl_ctx, ssl_gen_rsa_key);
+
+	/* PRNG initialization might want to use /dev/urandom, make sure it
+	   does it before chrooting. */
+	if (RAND_bytes(&buf, 1) != 1)
+		i_fatal("RAND_bytes() failed: %s\n", ssl_last_error());
 
         ssl_proxies = hash_create(default_pool, default_pool, 0, NULL, NULL);
 	ssl_initialized = TRUE;



More information about the dovecot-cvs mailing list