summaryrefslogtreecommitdiffstats
path: root/sys/netkey/key.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2000-08-28 08:24:46 +0000
committerume <ume@FreeBSD.org>2000-08-28 08:24:46 +0000
commitb00485b521aab4ab98d16283110973c0df4985a8 (patch)
treedef4908ac4c94b0a0e057041b5e00d40d04beba6 /sys/netkey/key.c
parent7e2fa230c727ae8342addf2bd6f50159422199f4 (diff)
downloadFreeBSD-src-b00485b521aab4ab98d16283110973c0df4985a8.zip
FreeBSD-src-b00485b521aab4ab98d16283110973c0df4985a8.tar.gz
make sure we have IV that is random enough. memory allocator on
some of platforms give us almost constant number (oops). Obtained from: KAME
Diffstat (limited to 'sys/netkey/key.c')
-rw-r--r--sys/netkey/key.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/netkey/key.c b/sys/netkey/key.c
index 7af4a26..caa2f93 100644
--- a/sys/netkey/key.c
+++ b/sys/netkey/key.c
@@ -2664,6 +2664,7 @@ key_setsaval(sav, m, mhp)
const struct esp_algorithm *algo;
#endif
int error = 0;
+ struct timeval tv;
/* sanity check */
if (m == NULL || mhp == NULL || mhp->msg == NULL)
@@ -2812,7 +2813,14 @@ key_setsaval(sav, m, mhp)
error = ENOBUFS;
goto fail;
}
- /* initialize ? */
+
+ /* initialize */
+ {
+ int i;
+ u_int8_t *p = (u_int8_t *)sav->iv;
+ for (i = 0; i < sav->ivlen; i++)
+ p[i] = key_random() & 0xff;
+ }
break;
#else
break;
@@ -2834,9 +2842,6 @@ key_setsaval(sav, m, mhp)
sav->tick = 0;
/* make lifetime for CURRENT */
- {
- struct timeval tv;
-
KMALLOC(sav->lft_c, struct sadb_lifetime *,
sizeof(struct sadb_lifetime));
if (sav->lft_c == NULL) {
@@ -2856,7 +2861,6 @@ key_setsaval(sav, m, mhp)
sav->lft_c->sadb_lifetime_bytes = 0;
sav->lft_c->sadb_lifetime_addtime = tv.tv_sec;
sav->lft_c->sadb_lifetime_usetime = 0;
- }
/* lifetimes for HARD and SOFT */
{
OpenPOWER on IntegriCloud