diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libc/net/res_random.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/libc/net/res_random.c b/src/lib/libc/net/res_random.c index bd32a50c33..ef768a7348 100644 --- a/src/lib/libc/net/res_random.c +++ b/src/lib/libc/net/res_random.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: res_random.c,v 1.7 1997/07/25 20:30:08 mickey Exp $ */ | 1 | /* $OpenBSD: res_random.c,v 1.8 1999/08/26 13:38:10 provos Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de> | 4 | * Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de> |
@@ -83,7 +83,7 @@ const static u_int16_t pfacts[PFAC_N] = { | |||
83 | }; | 83 | }; |
84 | 84 | ||
85 | static u_int16_t ru_x; | 85 | static u_int16_t ru_x; |
86 | static u_int16_t ru_seed; | 86 | static u_int16_t ru_seed, ru_seed2; |
87 | static u_int16_t ru_a, ru_b; | 87 | static u_int16_t ru_a, ru_b; |
88 | static u_int16_t ru_g; | 88 | static u_int16_t ru_g; |
89 | static u_int16_t ru_counter = 0; | 89 | static u_int16_t ru_counter = 0; |
@@ -143,6 +143,8 @@ res_initid() | |||
143 | 143 | ||
144 | /* 15 bits of random seed */ | 144 | /* 15 bits of random seed */ |
145 | ru_seed = (tmp >> 16) & 0x7FFF; | 145 | ru_seed = (tmp >> 16) & 0x7FFF; |
146 | tmp = arc4random(); | ||
147 | ru_seed2 = tmp & 0x7FFF; | ||
146 | 148 | ||
147 | tmp = arc4random(); | 149 | tmp = arc4random(); |
148 | 150 | ||
@@ -204,7 +206,7 @@ res_randomid() | |||
204 | 206 | ||
205 | ru_counter += i; | 207 | ru_counter += i; |
206 | 208 | ||
207 | return (ru_seed ^ pmod(ru_g,ru_x,RU_N)) | ru_msb; | 209 | return (ru_seed ^ pmod(ru_g,ru_seed2 ^ ru_x,RU_N)) | ru_msb; |
208 | } | 210 | } |
209 | 211 | ||
210 | #if 0 | 212 | #if 0 |