initialize random seed globaly from $RANDOM_DEVICE

git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@719 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2006-04-16 09:13:09 +00:00
parent d50255ac1e
commit 0990d8c796
2 changed files with 25 additions and 6 deletions

View file

@ -135,6 +135,29 @@ static void close_pipe(int p[2]) {
p[0] = p[1] = -1;
}
static void set_random_seed(void) {
unsigned int seed = 0;
#ifdef RANDOM_DEVICE
int fd;
if ((fd = open(RANDOM_DEVICE, O_RDONLY)) >= 0) {
ssize_t r;
if ((r = pa_loop_read(fd, &seed, sizeof(seed))) < 0 || (size_t) r != sizeof(seed)) {
pa_log_error(__FILE__": failed to read entropy from '"RANDOM_DEVICE"'");
seed += (unsigned int) time(NULL);
}
close(fd);
}
#else
seed = (unsigned int) time(NULL);
#endif
srand(seed);
}
int main(int argc, char *argv[]) {
pa_core *c;
pa_strbuf *buf = NULL;
@ -180,6 +203,8 @@ int main(int argc, char *argv[]) {
}
#endif
set_random_seed();
pa_log_set_ident("polypaudio");
conf = pa_daemon_conf_new();

View file

@ -36,10 +36,6 @@
#include "random.h"
#ifndef OS_IS_WIN32
#define RANDOM_DEVICE "/dev/urandom"
#endif
void pa_random(void *ret_data, size_t length) {
int fd;
ssize_t r = 0;
@ -64,8 +60,6 @@ void pa_random(void *ret_data, size_t length) {
", falling back to unsecure pseudo RNG.\n", strerror(errno));
#endif
srand(time(NULL));
for (p = ret_data, l = length; l > 0; p++, l--)
*p = (uint8_t) rand();
}