summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrishna Yenduri <Bhargava.Yenduri@Sun.COM>2008-08-18 14:08:39 -0700
committerKrishna Yenduri <Bhargava.Yenduri@Sun.COM>2008-08-18 14:08:39 -0700
commit1ae80171b99928a9c871159a31d48efce22f5e9b (patch)
tree0743f487a9245ff963d84a582f8b56528e313b2b
parenta078ff4a0f321365c3ca4cd812df95c377f50916 (diff)
downloadillumos-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.c9
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;