summaryrefslogtreecommitdiffstats
path: root/src/lib/crypto
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>2011-10-05 21:30:55 +0000
committerSam Hartman <hartmans@mit.edu>2011-10-05 21:30:55 +0000
commit56a9eb2f2d65f0900935c841720cdeca7f27cc81 (patch)
treeee718c9ff30ed0cbd884e4e19daef319287fba35 /src/lib/crypto
parentc68f4f687800d66a114dd2989093fc75bf4fadd1 (diff)
downloadkrb5-56a9eb2f2d65f0900935c841720cdeca7f27cc81.tar.gz
krb5-56a9eb2f2d65f0900935c841720cdeca7f27cc81.tar.xz
krb5-56a9eb2f2d65f0900935c841720cdeca7f27cc81.zip
Don't need to check for fork on windows
Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com> git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@25311 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/crypto')
-rw-r--r--src/lib/crypto/krb/prng_fortuna.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lib/crypto/krb/prng_fortuna.c b/src/lib/crypto/krb/prng_fortuna.c
index e40d341ee9..d54d6529a2 100644
--- a/src/lib/crypto/krb/prng_fortuna.c
+++ b/src/lib/crypto/krb/prng_fortuna.c
@@ -114,9 +114,6 @@ struct fortuna_state
unsigned int reseed_count;
struct timeval last_reseed_time;
unsigned int pool0_bytes;
-
- /* Current pid as of last request, for fork safety. */
- pid_t pid;
};
/*
@@ -346,7 +343,9 @@ accumulator_output(struct fortuna_state *st, unsigned char *dst, size_t len)
static k5_mutex_t fortuna_lock = K5_MUTEX_PARTIAL_INITIALIZER;
static struct fortuna_state main_state;
+#ifndef _WIN32
static pid_t last_pid;
+#endif
static krb5_boolean have_entropy = FALSE;
int
@@ -360,7 +359,9 @@ k5_prng_init(void)
return ret;
init_state(&main_state);
+#ifndef _WIN32
last_pid = getpid();
+#endif
if (k5_get_os_entropy(osbuf, sizeof(osbuf))) {
generator_reseed(&main_state, osbuf, sizeof(osbuf));
have_entropy = TRUE;
@@ -410,8 +411,10 @@ krb5_error_code KRB5_CALLCONV
krb5_c_random_make_octets(krb5_context context, krb5_data *outdata)
{
krb5_error_code ret;
+#ifndef _WIN32
pid_t pid = getpid();
unsigned char pidbuf[4];
+#endif
ret = k5_mutex_lock(&fortuna_lock);
if (ret)
@@ -422,12 +425,14 @@ krb5_c_random_make_octets(krb5_context context, krb5_data *outdata)
return KRB5_CRYPTO_INTERNAL;
}
+#ifndef _WIN32 /* no 'fork' on windows; does not apply */
if (pid != last_pid) {
/* We forked; make sure child's PRNG stream differs from parent's. */
store_32_be(pid, pidbuf);
generator_reseed(&main_state, pidbuf, 4);
last_pid = pid;
}
+#endif
accumulator_output(&main_state, (unsigned char *)outdata->data,
outdata->length);