Don't need to check for fork on windows
authorSam Hartman <hartmans@mit.edu>
Wed, 5 Oct 2011 21:30:55 +0000 (21:30 +0000)
committerSam Hartman <hartmans@mit.edu>
Wed, 5 Oct 2011 21:30:55 +0000 (21:30 +0000)
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

src/lib/crypto/krb/prng_fortuna.c

index e40d341ee997cffd2f513e6c7e09bff2c4ba9d17..d54d6529a26980ea44c240705dea411d4e835171 100644 (file)
@@ -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);