[Pcsclite-cvs-commit] r426 - trunk/PKCS11/src

Ludovic Rousseau rousseau at alioth.debian.org
Sat Nov 25 21:14:11 CET 2006


Author: rousseau
Date: 2006-11-25 21:14:11 +0100 (Sat, 25 Nov 2006)
New Revision: 426

Modified:
   trunk/PKCS11/src/p11_crypt.c
Log:
C_Decrypt(): correct key size.

Patch from
http://archives.neohapsis.com/archives/dev/muscle/2006-q4/0162.html


Modified: trunk/PKCS11/src/p11_crypt.c
===================================================================
--- trunk/PKCS11/src/p11_crypt.c	2006-10-13 18:57:33 UTC (rev 425)
+++ trunk/PKCS11/src/p11_crypt.c	2006-11-25 20:14:11 UTC (rev 426)
@@ -9,6 +9,7 @@
 **  Purpose: Encryption and decryption
 ** 
 ******************************************************************************/
+#include <assert.h>
 #include "cryptoki.h"
 
 /* Removed by Netscape
@@ -30,6 +31,8 @@
     int i = 0;
     int padLen = toLen - 3 - fromLen;
 
+    assert( toLen > fromLen );
+    assert( padLen >= 0 );
     if( toLen < fromLen || padLen < 0 ) {
         return 0;
     }
@@ -51,6 +54,8 @@
     memcpy(to+i, from, fromLen);
     i += fromLen;
 
+    assert( (CK_ULONG) i == toLen );
+
     return 1;
 }
 
@@ -356,7 +361,7 @@
     P11_Object *key; /* = (P11_Object *)session->sign_key; */
     MSCCryptInit cryptInit;
     CK_BYTE *t_data1 = 0, *t_data2 = 0;
-    CK_ULONG output_len, t_data1_len, t_data2_len;
+    CK_ULONG t_data1_len, t_data2_len;
 
 	P11_Slot *slot;
 	CK_ULONG slotID;
@@ -422,10 +427,9 @@
         cryptInit.optParams       = 0;
         cryptInit.optParamsSize   = 0;
 
-		output_len = key->msc_key->keySize / 8;
-        t_data1 = (CK_BYTE *)malloc(output_len);
-		t_data2_len = output_len;
-        t_data2 = (CK_BYTE *)malloc(t_data2_len);
+        t_data1 = (CK_BYTE *)malloc(key->msc_key->keySize / 8);
+        t_data2 = (CK_BYTE *)malloc(key->msc_key->keySize / 8);
+        t_data2_len = key->msc_key->keySize / 8; // PATCH
 
         if (!t_data1 || !t_data2)
             rv = CKR_HOST_MEMORY;




More information about the Pcsclite-cvs-commit mailing list