diff options
author | ume <ume@FreeBSD.org> | 2000-08-28 08:24:46 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2000-08-28 08:24:46 +0000 |
commit | b00485b521aab4ab98d16283110973c0df4985a8 (patch) | |
tree | def4908ac4c94b0a0e057041b5e00d40d04beba6 /sys/netkey | |
parent | 7e2fa230c727ae8342addf2bd6f50159422199f4 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/netkey/key.c | 14 |
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 */ { |