aboutsummaryrefslogtreecommitdiff
path: root/lib/ssluse.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ssluse.c')
-rw-r--r--lib/ssluse.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/ssluse.c b/lib/ssluse.c
index bb78df009..17bec70da 100644
--- a/lib/ssluse.c
+++ b/lib/ssluse.c
@@ -43,6 +43,7 @@
#include "urldata.h"
#include "sendf.h"
+#include "formdata.h" /* for the boundary function */
#ifdef USE_SSLEAY
@@ -162,6 +163,29 @@ UrgSSLConnect (struct UrlData *data)
/* Lets get nice error messages */
SSL_load_error_strings();
+#ifdef HAVE_RAND_STATUS
+ /* RAND_status() was introduced in OpenSSL 0.9.5 */
+ if(0 == RAND_status())
+#endif
+ {
+ /* We need to seed the PRNG properly! */
+#ifdef WIN32
+ /* This one gets a random value by reading the currently shown screen */
+ RAND_screen();
+#else
+ int len;
+ char *area = MakeFormBoundary();
+ if(!area)
+ return 3; /* out of memory */
+
+ len = strlen(area);
+
+ RAND_seed(area, len);
+
+ free(area); /* now remove the random junk */
+#endif
+ }
+
/* Setup all the global SSL stuff */
SSLeay_add_ssl_algorithms();