diff options
| author | Lennart Poettering <lennart@poettering.net> | 2006-04-16 09:13:09 +0000 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2006-04-16 09:13:09 +0000 | 
| commit | 0990d8c796e9896e791d1ce23557e6d2f5ecf5b0 (patch) | |
| tree | 9969633c4fc3c7ca73a5cbc9378055cb3c3281ef /src | |
| parent | d50255ac1e8856943b9057a365e1b9be83ac9124 (diff) | |
initialize random seed globaly from $RANDOM_DEVICE
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@719 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src')
| -rw-r--r-- | src/daemon/main.c | 25 | ||||
| -rw-r--r-- | src/polypcore/random.c | 6 | 
2 files changed, 25 insertions, 6 deletions
diff --git a/src/daemon/main.c b/src/daemon/main.c index 8457916a..d783531a 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -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(); diff --git a/src/polypcore/random.c b/src/polypcore/random.c index 1c2280e3..ffd40474 100644 --- a/src/polypcore/random.c +++ b/src/polypcore/random.c @@ -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();      }  | 
