diff options
author | pjd <pjd@FreeBSD.org> | 2006-07-22 10:04:47 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2006-07-22 10:04:47 +0000 |
commit | 0495e437293fe165355aa229e2745d21683fc96b (patch) | |
tree | 84b3bd47ec6cc61bae99ee3325bf3e855182b3e1 /sys | |
parent | ecb3559b0b0aefbcf6d3f7393180dd2ad97e7e28 (diff) | |
download | FreeBSD-src-0495e437293fe165355aa229e2745d21683fc96b.zip FreeBSD-src-0495e437293fe165355aa229e2745d21683fc96b.tar.gz |
Set ses_ictx and ses_octx to NULL after freeing them, so we won't free
them twice.
This is possible for example in situation when session is used in
authentication context, then freed and then used in encryption context
and freed - in encryption context ses_ictx and ses_octx are not touched
at newsession time, but padlock_freesession could still try to free them
when they are not NULL.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/crypto/via/padlock.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/crypto/via/padlock.c b/sys/crypto/via/padlock.c index 95351af..34d04c4 100644 --- a/sys/crypto/via/padlock.c +++ b/sys/crypto/via/padlock.c @@ -489,10 +489,12 @@ padlock_freesession(void *arg __unused, uint64_t tid) if (ses->ses_ictx != NULL) { bzero(ses->ses_ictx, sizeof(ses->ses_ictx)); free(ses->ses_ictx, M_CRYPTO_DATA); + ses->ses_ictx = NULL; } if (ses->ses_octx != NULL) { bzero(ses->ses_octx, sizeof(ses->ses_octx)); free(ses->ses_octx, M_CRYPTO_DATA); + ses->ses_octx = NULL; } bzero(ses, sizeof(ses)); ses->ses_used = 0; |