commit 8e6db769ac549cfe26042f7d51ae8a301d8fc569 from: Federico G. Schwindt date: Wed Oct 23 15:00:26 2013 UTC Check and call arc4random_stir() if present FreeBSD prior to 10.0 does not automatically stir on fork(). Same with current NetBSD. If arc4random_stir() is present assume is needed and call it instead of srand(). commit - 8a041373bb81f75a91a00e692979619938199989 commit + 8e6db769ac549cfe26042f7d51ae8a301d8fc569 blob - 16f970f8dc982d21d96e9f1bdf2de8deba1736f8 blob + e3f51cf0268a086a49c4baddd34a723cc75106ea --- configure.ng +++ configure.ng @@ -187,9 +187,9 @@ AC_CHECK_FUNCS([ \ # Optional functions AC_CHECK_FUNCS_ONCE([ \ - arc4random gai_strerror getaddrinfo getnameinfo inet_aton sigaction \ - sigprocmask snprintf vsnprintf strdup strndup strlcpy strlcat strtok_r \ - waitpid]) + arc4random arc4random_stir gai_strerror getaddrinfo getnameinfo inet_aton + sigaction sigprocmask snprintf vsnprintf strdup strndup strlcpy strlcat \ + strtok_r waitpid]) # -- Configuration options -- blob - d290f3bd100faed3cc17d8d24cd6396443a41131 blob + a5afb5011cb1c468732561d5944fa9f685c1c4e4 --- src/ngircd/proc.c +++ src/ngircd/proc.c @@ -77,6 +77,9 @@ Proc_Fork(PROC_STAT *proc, int *pipefds, void (*cbfunc return -1; case 0: /* New child process: */ +#ifdef HAVE_ARC4RANDOM_STIR + arc4random_stir(); +#endif #ifndef HAVE_ARC4RANDOM srand(seed ^ (unsigned int)time(NULL) ^ getpid()); #endif