Index: fhandler_socket.cc =================================================================== RCS file: /cvs/src/src/winsup/cygwin/fhandler_socket.cc,v retrieving revision 1.7 diff -u -p -2 -r1.7 fhandler_socket.cc --- fhandler_socket.cc 2001/04/18 21:10:12 1.7 +++ fhandler_socket.cc 2001/05/04 06:54:47 @@ -29,5 +29,9 @@ #define SECRET_EVENT_NAME "cygwin.local_socket.secret.%d.%08x-%08x-%08x-%08x" +#define ENTROPY_SOURCE_NAME "/dev/urandom" +#define ENTROPY_SOURCE_DEV_UNIT 9 +fhandler_dev_random* entropy_source = NULL; + /**********************************************************************/ /* fhandler_socket */ @@ -51,6 +55,20 @@ void fhandler_socket::set_connect_secret () { - for (int i = 0; i < 4; i++) - connect_secret [i] = random (); + if (!entropy_source) + { + void *buf = malloc (sizeof (fhandler_dev_random)); + entropy_source = new (buf) fhandler_dev_random (ENTROPY_SOURCE_NAME, + ENTROPY_SOURCE_DEV_UNIT); + } + if (entropy_source && + !entropy_source->open (ENTROPY_SOURCE_NAME, O_RDONLY)) + { + delete entropy_source; + entropy_source = NULL; + } + if (!entropy_source || + (entropy_source->read (connect_secret, sizeof (connect_secret)) != + sizeof (connect_secret))) + bzero ((char*) connect_secret, sizeof (connect_secret)); }