Hi,

Some functions in rnd have a timespec; make sure to zero it
as already done with other buffers. Also do buf in
dequeue_randomness().

- Michael


Index: src/sys/dev/rnd.c
===================================================================
RCS file: /cvs/src/sys/dev/rnd.c,v
retrieving revision 1.191
diff -u -p -u -r1.191 rnd.c
--- src/sys/dev/rnd.c   8 Dec 2016 05:32:49 -0000       1.191
+++ src/sys/dev/rnd.c   13 Dec 2016 04:49:24 -0000
@@ -312,6 +312,7 @@ enqueue_randomness(u_int state, u_int va
                timeout_add(&rnd_timeout, 1);
 
        mtx_leave(&entropylock);
+       explicit_bzero(&ts, sizeof(ts));
 }
 
 /*
@@ -388,6 +389,7 @@ dequeue_randomness(void *v)
                mtx_enter(&entropylock);
        }
        mtx_leave(&entropylock);
+       explicit_bzero(buf, sizeof(buf));
 }
 
 /*
@@ -458,6 +460,7 @@ suspend_randomness(void)
        dequeue_randomness(NULL);
        rs_count = 0;
        arc4random_buf(entropy_pool, sizeof(entropy_pool));
+       explicit_bzero(&ts, sizeof(ts));
 }
 
 void
@@ -473,6 +476,7 @@ resume_randomness(char *buf, size_t bufl
 
        dequeue_randomness(NULL);
        rs_count = 0;
+       explicit_bzero(&ts, sizeof(ts));
 }
 
 static inline void _rs_rekey(u_char *dat, size_t datlen);
@@ -523,6 +527,7 @@ _rs_stir(int do_lock)
                mtx_leave(&rndlock);
 
        explicit_bzero(buf, sizeof(buf));
+       explicit_bzero(&ts, sizeof(ts));
 }
 
 static inline void

Reply via email to