diff options
author | Jeremy Allison <jra@samba.org> | 2001-06-06 22:04:26 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-06-06 22:04:26 +0000 |
commit | e8e07a26eb1365d195c0345ad075ff828517fe53 (patch) | |
tree | 7677da882c8f9cbea4385be2135624413f3c6ad9 /source3/passdb | |
parent | 3e808f0af4ed19dfa431b6cbe3baf778e0de44cb (diff) | |
download | samba-e8e07a26eb1365d195c0345ad075ff828517fe53.tar.gz samba-e8e07a26eb1365d195c0345ad075ff828517fe53.tar.bz2 samba-e8e07a26eb1365d195c0345ad075ff828517fe53.zip |
Changes to use new genrand code that got missed while I was in Japan.
Jeremy.
(This used to be commit 5a15831b9ae79ce1ce34d5574fe5da114d184e45)
Diffstat (limited to 'source3/passdb')
-rw-r--r-- | source3/passdb/secrets.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c index 7c65da0264..4a8a363923 100644 --- a/source3/passdb/secrets.c +++ b/source3/passdb/secrets.c @@ -176,3 +176,32 @@ BOOL trust_password_delete(char *domain) { return secrets_delete(trust_keystr(domain)); } + +/******************************************************************* + Reset the 'done' variables so after a client process is created + from a fork call these calls will be re-done. This should be + expanded if more variables need reseting. + ******************************************************************/ + +void reset_globals_after_fork(void) +{ + unsigned char dummy; + + /* + * Increment the global seed value to ensure every smbd starts + * with a new random seed. + */ + + if (tdb) { + uint32 initial_val = sys_getpid(); + tdb_change_int_atomic(tdb, "INFO/random_seed", &initial_val, 1); + set_rand_reseed_data((unsigned char *)&initial_val, sizeof(initial_val)); + } + + /* + * Re-seed the random crypto generator, so all smbd's + * started from the same parent won't generate the same + * sequence. + */ + generate_random_buffer( &dummy, 1, True); +} |