diff options
author | Krishna Yenduri <Bhargava.Yenduri@Sun.COM> | 2008-08-18 14:08:39 -0700 |
---|---|---|
committer | Krishna Yenduri <Bhargava.Yenduri@Sun.COM> | 2008-08-18 14:08:39 -0700 |
commit | 1ae80171b99928a9c871159a31d48efce22f5e9b (patch) | |
tree | 0743f487a9245ff963d84a582f8b56528e313b2b | |
parent | a078ff4a0f321365c3ca4cd812df95c377f50916 (diff) | |
download | illumos-joyent-1ae80171b99928a9c871159a31d48efce22f5e9b.tar.gz |
6733825 dprov_session_task causes memory corruption when growing sessions array
-rw-r--r-- | usr/src/uts/common/crypto/io/dprov.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/usr/src/uts/common/crypto/io/dprov.c b/usr/src/uts/common/crypto/io/dprov.c index 097bcc4bc7..a2fe7469e6 100644 --- a/usr/src/uts/common/crypto/io/dprov.c +++ b/usr/src/uts/common/crypto/io/dprov.c @@ -23,7 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" /* * Dummy Cryptographic Provider: @@ -6624,14 +6623,16 @@ dprov_session_task(dprov_req_t *taskq_req) if (i == softc->ds_sessions_slots) { /* ran out of slots, grow sessions array */ - new_sessions = kmem_zalloc(2 * softc->ds_sessions_slots, - KM_NOSLEEP); + new_sessions = kmem_zalloc( + 2 * softc->ds_sessions_slots * + sizeof (dprov_session_t *), KM_NOSLEEP); if (new_sessions == NULL) { error = CRYPTO_SESSION_COUNT; break; } bcopy(softc->ds_sessions, new_sessions, - softc->ds_sessions_slots); + softc->ds_sessions_slots * + sizeof (dprov_session_t *)); kmem_free(softc->ds_sessions, softc->ds_sessions_slots * sizeof (dprov_session_t *)); softc->ds_sessions = new_sessions; |