diff options
-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 */ { |