diff options
| author | deraadt <> | 2014-06-13 15:36:37 +0000 | 
|---|---|---|
| committer | deraadt <> | 2014-06-13 15:36:37 +0000 | 
| commit | b9fdc138b8ab304729a3609dabe945ec51f1987e (patch) | |
| tree | b066f017e8813e87254bdccdb82f1284b87a1c4d /src/lib/libc | |
| parent | 813e1e66c6467f6f618a9f16121475dc07d7e956 (diff) | |
| download | openbsd-b9fdc138b8ab304729a3609dabe945ec51f1987e.tar.gz openbsd-b9fdc138b8ab304729a3609dabe945ec51f1987e.tar.bz2 openbsd-b9fdc138b8ab304729a3609dabe945ec51f1987e.zip | |
use getgentropy() call.  If it fails, things are pretty bad --
call abort().
this direction discussed at length with miod beck tedu matthew etc
Diffstat (limited to 'src/lib/libc')
| -rw-r--r-- | src/lib/libc/crypt/arc4random.c | 11 | 
1 files changed, 3 insertions, 8 deletions
| diff --git a/src/lib/libc/crypt/arc4random.c b/src/lib/libc/crypt/arc4random.c index e08b729a04..4b6cde63fb 100644 --- a/src/lib/libc/crypt/arc4random.c +++ b/src/lib/libc/crypt/arc4random.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: arc4random.c,v 1.31 2014/05/31 10:32:12 jca Exp $ */ | 1 | /* $OpenBSD: arc4random.c,v 1.32 2014/06/13 15:36:37 deraadt Exp $ */ | 
| 2 | 2 | ||
| 3 | /* | 3 | /* | 
| 4 | * Copyright (c) 1996, David Mazieres <dm@uun.org> | 4 | * Copyright (c) 1996, David Mazieres <dm@uun.org> | 
| @@ -77,15 +77,10 @@ _rs_init(u_char *buf, size_t n) | |||
| 77 | static void | 77 | static void | 
| 78 | _rs_stir(void) | 78 | _rs_stir(void) | 
| 79 | { | 79 | { | 
| 80 | int mib[2]; | ||
| 81 | size_t len; | ||
| 82 | u_char rnd[KEYSZ + IVSZ]; | 80 | u_char rnd[KEYSZ + IVSZ]; | 
| 83 | 81 | ||
| 84 | mib[0] = CTL_KERN; | 82 | if (getentropy(rnd, sizeof rnd) == -1) | 
| 85 | mib[1] = KERN_ARND; | 83 | abort(); | 
| 86 | |||
| 87 | len = sizeof(rnd); | ||
| 88 | sysctl(mib, 2, rnd, &len, NULL, 0); | ||
| 89 | 84 | ||
| 90 | if (!rs_initialized) { | 85 | if (!rs_initialized) { | 
| 91 | rs_initialized = 1; | 86 | rs_initialized = 1; | 
