[Python-checkins] CVS: python/dist/src/Modules socketmodule.c,1.138,1.139

Moshe Zadka moshez@users.sourceforge.net
Sun, 18 Mar 2001 09:11:58 -0800


Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv21822

Modified Files:
	socketmodule.c 
Log Message:

Commiting patch 40510


Index: socketmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/socketmodule.c,v
retrieving revision 1.138
retrieving revision 1.139
diff -C2 -r1.138 -r1.139
*** socketmodule.c	2001/03/02 06:27:12	1.138
--- socketmodule.c	2001/03/18 17:11:56	1.139
***************
*** 195,198 ****
--- 195,199 ----
  #include "openssl/ssl.h"
  #include "openssl/err.h"
+ #include "openssl/rand.h"
  #endif /* USE_SSL */
  
***************
*** 2545,2548 ****
--- 2546,2575 ----
  				 (PyObject *)&SSL_Type) != 0)
  		return;
+ 	if (RAND_status() == 0) {
+ #ifdef USE_EGD
+ 		char random_device[MAXPATHLEN+1];
+ 		if (!RAND_file_name (random_device, MAXPATHLEN + 1)) {
+ 			PyErr_SetObject(SSLErrorObject,
+ 			        PyString_FromString("RAND_file_name error"));
+ 			return;
+ 		}
+ 		if (RAND_egd (random_device) == -1) {
+ 			PyErr_SetObject(SSLErrorObject,
+ 			             PyString_FromString("RAND_egd error"));
+ 			return;
+ 		}
+ #else /* USE_EGD not defined */
+ 		char random_string[32];
+ 		int i;
+ 
+                 PyErr_Warn(PyExc_RuntimeWarning, 
+                            "using insecure method to generate random numbers");
+ 		srand(time(NULL));
+ 		for(i=0; i<sizeof(random_string); i++) {
+ 			random_string[i] = rand();
+ 		}
+ 		RAND_seed(random_string, sizeof(random_string));
+ #endif /* USE_EGD */
+ 	}
  #endif /* USE_SSL */
  	PyDict_SetItemString(d, "error", PySocket_Error);