summaryrefslogtreecommitdiffstats
path: root/sys/netipsec/key.c
diff options
context:
space:
mode:
authorbz <bz@FreeBSD.org>2008-03-02 17:12:28 +0000
committerbz <bz@FreeBSD.org>2008-03-02 17:12:28 +0000
commit767a2621f07a4ba9a59a9d383581ed5558f667db (patch)
tree9e4f7f34605a0e72d8b6dd6e4df767cbae80a7aa /sys/netipsec/key.c
parent3dea77f93cd358a469b5ae398a5e67d559db283a (diff)
downloadFreeBSD-src-767a2621f07a4ba9a59a9d383581ed5558f667db.zip
FreeBSD-src-767a2621f07a4ba9a59a9d383581ed5558f667db.tar.gz
Fix bugs when allocating and passing information of current lifetime and
soft lifetime [1] introduced in rev. 1.21 of key.c. Along with that, fix a related problem in key_debug printing the correct data. While there replace a printf by panic in a sanity check. PR: 120751 Submitted by: Kazuaki ODA (kazuaki aliceblue.jp) [1] MFC after: 5 days
Diffstat (limited to 'sys/netipsec/key.c')
-rw-r--r--sys/netipsec/key.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c
index 5dfc32f..5ce367d 100644
--- a/sys/netipsec/key.c
+++ b/sys/netipsec/key.c
@@ -3137,7 +3137,7 @@ key_setsaval(sav, m, mhp)
sav->created = time_second;
/* make lifetime for CURRENT */
- sav->lft_c = malloc(sizeof(struct sadb_lifetime), M_IPSEC_MISC, M_NOWAIT);
+ sav->lft_c = malloc(sizeof(struct seclifetime), M_IPSEC_MISC, M_NOWAIT);
if (sav->lft_c == NULL) {
ipseclog((LOG_DEBUG, "%s: No more memory.\n", __func__));
error = ENOBUFS;
@@ -6323,7 +6323,12 @@ key_expire(struct secasvar *sav)
lt->sadb_lifetime_addtime = sav->lft_c->addtime;
lt->sadb_lifetime_usetime = sav->lft_c->usetime;
lt = (struct sadb_lifetime *)(mtod(m, caddr_t) + len / 2);
- bcopy(sav->lft_s, lt, sizeof(*lt));
+ lt->sadb_lifetime_len = PFKEY_UNIT64(sizeof(struct sadb_lifetime));
+ lt->sadb_lifetime_exttype = SADB_EXT_LIFETIME_SOFT;
+ lt->sadb_lifetime_allocations = sav->lft_s->allocations;
+ lt->sadb_lifetime_bytes = sav->lft_s->bytes;
+ lt->sadb_lifetime_addtime = sav->lft_s->addtime;
+ lt->sadb_lifetime_usetime = sav->lft_s->usetime;
m_cat(result, m);
/* set sadb_address for source */
OpenPOWER on IntegriCloud