diff options
author | bcook <> | 2014-07-16 00:15:35 +0000 |
---|---|---|
committer | bcook <> | 2014-07-16 00:15:35 +0000 |
commit | acf383ad5d9364bf4f00c6db1beadc8f30dc70a6 (patch) | |
tree | 2dad05d0713ebf6f3e33db05867be59a36067c0d /src/lib | |
parent | 4e78383c4e109f13072ab7a29d038095edaf2bd7 (diff) | |
download | openbsd-acf383ad5d9364bf4f00c6db1beadc8f30dc70a6.tar.gz openbsd-acf383ad5d9364bf4f00c6db1beadc8f30dc70a6.tar.bz2 openbsd-acf383ad5d9364bf4f00c6db1beadc8f30dc70a6.zip |
added handler for an atfork hook from kettenis@
ok deraadt@ beck@ kettenis@
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libc/crypt/arc4random.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/libc/crypt/arc4random.c b/src/lib/libc/crypt/arc4random.c index 235a5d8d83..37b1ad77c1 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.43 2014/07/13 09:32:42 beck Exp $ */ | 1 | /* $OpenBSD: arc4random.c,v 1.44 2014/07/16 00:15:35 bcook Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1996, David Mazieres <dm@uun.org> | 4 | * Copyright (c) 1996, David Mazieres <dm@uun.org> |
@@ -66,6 +66,13 @@ static struct { | |||
66 | static inline void _rs_rekey(u_char *dat, size_t datlen); | 66 | static inline void _rs_rekey(u_char *dat, size_t datlen); |
67 | 67 | ||
68 | static inline void | 68 | static inline void |
69 | _rs_forkhandler(void) | ||
70 | { | ||
71 | if (rs) | ||
72 | rs->rs_count = 0; | ||
73 | } | ||
74 | |||
75 | static inline void | ||
69 | _rs_init(u_char *buf, size_t n) | 76 | _rs_init(u_char *buf, size_t n) |
70 | { | 77 | { |
71 | if (n < KEYSZ + IVSZ) | 78 | if (n < KEYSZ + IVSZ) |
@@ -78,6 +85,8 @@ _rs_init(u_char *buf, size_t n) | |||
78 | #ifdef MAP_INHERIT_ZERO | 85 | #ifdef MAP_INHERIT_ZERO |
79 | if (minherit(rs, sizeof(*rs), MAP_INHERIT_ZERO) == -1) | 86 | if (minherit(rs, sizeof(*rs), MAP_INHERIT_ZERO) == -1) |
80 | abort(); | 87 | abort(); |
88 | #else | ||
89 | _ARC4_ATFORK(_rs_forkhandler); | ||
81 | #endif | 90 | #endif |
82 | } | 91 | } |
83 | if (rsx == NULL) { | 92 | if (rsx == NULL) { |