summaryrefslogtreecommitdiffstats
path: root/src/daemon
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-04-16 09:13:09 +0000
committerLennart Poettering <lennart@poettering.net>2006-04-16 09:13:09 +0000
commit0990d8c796e9896e791d1ce23557e6d2f5ecf5b0 (patch)
tree9969633c4fc3c7ca73a5cbc9378055cb3c3281ef /src/daemon
parentd50255ac1e8856943b9057a365e1b9be83ac9124 (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/daemon')
-rw-r--r--src/daemon/main.c25
1 files changed, 25 insertions, 0 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();