[PATCH] Seed random generator for SMBD in main()
Robin McCorkell
rmccorkell at karoshi.org.uk
Fri Jun 5 05:29:39 MDT 2015
Remove srandom() from DFS shuffling, only seed once during process init.
Improves performance and gives better shuffling, also provides
protection against missing libc functions
See source3/nmbd/nmbd.c:857 for the original line
---
source3/smbd/msdfs.c | 4 +---
source3/smbd/server.c | 2 ++
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index a39efce..3a27293 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -434,10 +434,8 @@ static void shuffle_strlist(char **list, int count)
int i, r;
char *tmp;
- srandom(time(NULL));
-
for (i = count; i > 1; i--) {
- r = random() % i;
+ r = sys_random() % i;
tmp = list[i-1];
list[i-1] = list[r];
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 9746d84..93cb91e 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -1154,6 +1154,8 @@ extern void build_options(bool screen);
TimeInit();
+ sys_srandom(time(NULL) ^ getpid());
+
#ifdef HAVE_SET_AUTH_PARAMETERS
set_auth_parameters(argc,argv);
#endif
--
1.9.1
More information about the samba-technical
mailing list