File tree Expand file tree Collapse file tree 2 files changed +9
-1
lines changed
branches/try/src/libstd/sys/unix Expand file tree Collapse file tree 2 files changed +9
-1
lines changed Original file line number Diff line number Diff line change 1
1
---
2
2
refs/heads/master: 6dbb0e86aec11050480beb76eade6fb805010ba7
3
3
refs/heads/snap-stage3: 235d77457d80b549dad3ac36d94f235208a1eafb
4
- refs/heads/try: 121225f17d039e51ea462437189c7c5d229291a8
4
+ refs/heads/try: 61cbd07dec2d9670f170bed44f1815ea29a8a214
5
5
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
6
6
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
7
7
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
Original file line number Diff line number Diff line change @@ -66,6 +66,14 @@ mod imp {
66
66
if err == libc:: EINTR {
67
67
continue ;
68
68
} else if err == libc:: EAGAIN {
69
+ // if getrandom() returns EAGAIN it would have blocked
70
+ // because the non-blocking pool (urandom) has not
71
+ // initialized in the kernel yet due to a lack of entropy
72
+ // the fallback we do here is to avoid blocking applications
73
+ // which could depend on this call without ever knowing
74
+ // they do and don't have a work around. The PRNG of
75
+ // /dev/urandom will still be used but not over a completely
76
+ // full entropy pool
69
77
let reader = File :: open ( "/dev/urandom" ) . expect ( "Unable to open /dev/urandom" ) ;
70
78
let mut reader_rng = ReaderRng :: new ( reader) ;
71
79
reader_rng. fill_bytes ( & mut v[ read..] ) ;
You can’t perform that action at this time.
0 commit comments