[Olsr-dev] [PATCH v1 1/1] main: improve random number generator seed
Ferry Huberts
(spam-protected)
Sat Nov 10 11:50:56 CET 2012
From: Ferry Huberts <(spam-protected)>
Make it much more random when /dev/random or /dev/urandom is
available.
Signed-off-by: Ferry Huberts <(spam-protected)>
---
src/main.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/src/main.c b/src/main.c
index ae38439..382c5dc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -230,6 +230,28 @@ olsrmain_load_config(char *file) {
return 0;
}
+static void initRandom(void) {
+ unsigned int seed = (unsigned int)time(NULL);
+
+#ifndef _WIN32
+ int randomFile;
+
+ randomFile = open("/dev/random", O_RDONLY);
+ if (randomFile == -1) {
+ randomFile = open("/dev/urandom", O_RDONLY);
+ }
+
+ if (randomFile != -1) {
+ if (read(randomFile, &seed, sizeof(seed)) != sizeof(seed)) {
+ ; /* to fix an 'unused result' compiler warning */
+ }
+ close(randomFile);
+ }
+#endif /* _WIN32 */
+
+ srandom(seed);
+}
+
/**
* Main entrypoint
*/
@@ -297,7 +319,7 @@ int main(int argc, char *argv[]) {
olsr_openlog("olsrd");
/* setup random seed */
- srandom(time(NULL));
+ initRandom();
/* Init widely used statics */
memset(&all_zero, 0, sizeof(union olsr_ip_addr));
--
1.7.11.7
More information about the Olsr-dev
mailing list