]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_cdsa_plugin/lib/CSPsession.cpp
Security-59306.120.7.tar.gz
[apple/security.git] / OSX / libsecurity_cdsa_plugin / lib / CSPsession.cpp
index f2b674ff61fecf632203248e4d4a19f11461840b..c138fb5a841a8d4e1ec5ca3287f111885c38cffb 100644 (file)
@@ -742,7 +742,11 @@ void CSPFullPluginSession::GenerateKeyPair(CSSM_CC_HANDLE ccHandle,
        
        // make data to be encrypted
        unsigned bytesInKey = encryptingKey->KeyHeader.LogicalKeySizeInBits / 8;
        
        // make data to be encrypted
        unsigned bytesInKey = encryptingKey->KeyHeader.LogicalKeySizeInBits / 8;
-       u_int8_t buffer[bytesInKey];
+       u_int8_t *buffer = (u_int8_t*)malloc(bytesInKey);
+    if (buffer == NULL) {
+        CssmError::throwMe(CSSMERR_CSSM_MEMORY_ERROR);
+    }
+    
        unsigned i;
        
        for (i = 0; i < bytesInKey; ++i)
        unsigned i;
        
        for (i = 0; i < bytesInKey; ++i)
@@ -759,6 +763,7 @@ void CSPFullPluginSession::GenerateKeyPair(CSSM_CC_HANDLE ccHandle,
        CSSM_RETURN result = CSSM_CSP_CreateAsymmetricContext(moduleHandle, encryptingKey->KeyHeader.AlgorithmId,  &nullCreds, encryptingKey, CSSM_PADDING_NONE, &encryptHandle);
        if (result != CSSM_OK)
        {
        CSSM_RETURN result = CSSM_CSP_CreateAsymmetricContext(moduleHandle, encryptingKey->KeyHeader.AlgorithmId,  &nullCreds, encryptingKey, CSSM_PADDING_NONE, &encryptHandle);
        if (result != CSSM_OK)
        {
+        free(buffer);
                CssmError::throwMe(result);
        }
        
                CssmError::throwMe(result);
        }
        
@@ -769,6 +774,7 @@ void CSPFullPluginSession::GenerateKeyPair(CSSM_CC_HANDLE ccHandle,
        result = CSSM_QuerySize(encryptHandle, CSSM_TRUE, 1, &qsData);
        if (result == CSSMERR_CSP_INVALID_ALGORITHM)
        {
        result = CSSM_QuerySize(encryptHandle, CSSM_TRUE, 1, &qsData);
        if (result == CSSMERR_CSP_INVALID_ALGORITHM)
        {
+        free(buffer);
                return;
        }
        
                return;
        }
        
@@ -780,6 +786,7 @@ void CSPFullPluginSession::GenerateKeyPair(CSSM_CC_HANDLE ccHandle,
        result = CSSM_EncryptData(encryptHandle, &clearBuf, 1, &cipherBuf, 1, &bytesEncrypted, &remData);
        if (result != CSSM_OK)
        {
        result = CSSM_EncryptData(encryptHandle, &clearBuf, 1, &cipherBuf, 1, &bytesEncrypted, &remData);
        if (result != CSSM_OK)
        {
+        free(buffer);
                CssmError::throwMe(result);
        }
        
                CssmError::throwMe(result);
        }
        
@@ -803,12 +810,14 @@ void CSPFullPluginSession::GenerateKeyPair(CSSM_CC_HANDLE ccHandle,
 
        if (result != CSSM_OK)
        {
 
        if (result != CSSM_OK)
        {
+        free(buffer);
                CssmError::throwMe(result);
        }
        
        result = CSSM_DecryptData(decryptHandle, &cipherBuf, 1, &decryptedBuf, 1, &bytesEncrypted, &remData);
        if (result != CSSM_OK)
        {
                CssmError::throwMe(result);
        }
        
        result = CSSM_DecryptData(decryptHandle, &cipherBuf, 1, &decryptedBuf, 1, &bytesEncrypted, &remData);
        if (result != CSSM_OK)
        {
+        free(buffer);
                CssmError::throwMe(result);
        }
        
                CssmError::throwMe(result);
        }
        
@@ -826,6 +835,8 @@ void CSPFullPluginSession::GenerateKeyPair(CSSM_CC_HANDLE ccHandle,
        {
                free(remData.Data);
        }
        {
                free(remData.Data);
        }
+    
+    free(buffer);
 }
 
 void CSPFullPluginSession::ObtainPrivateKeyFromPublicKey(const CssmKey &PublicKey,
 }
 
 void CSPFullPluginSession::ObtainPrivateKeyFromPublicKey(const CssmKey &PublicKey,
@@ -1045,7 +1056,7 @@ KeyPool::add(ReferencedKey &referencedKey)
        // never add a key that is already in mKeyMap
        assert(inserted);
 
        // never add a key that is already in mKeyMap
        assert(inserted);
 
-    secdebug("SecAccessReference", "added a referenced key %p for key reference %d", &referencedKey, referencedKey.keyReference());
+    secinfo("SecAccessReference", "added a referenced key %p for key reference %ld", &referencedKey, referencedKey.keyReference());
 }
 
 ReferencedKey &
 }
 
 ReferencedKey &
@@ -1062,7 +1073,7 @@ KeyPool::findKeyReference(ReferencedKey::KeyReference keyReference) const
        if (it == mKeyMap.end())
                CssmError::throwMe(CSSMERR_CSP_INVALID_KEY_REFERENCE);
 
        if (it == mKeyMap.end())
                CssmError::throwMe(CSSMERR_CSP_INVALID_KEY_REFERENCE);
 
-    secdebug("SecAccessReference", "found a referenced key %p for key reference %d [%d]", it->second, keyReference, it->second->keyReference());
+    secinfo("SecAccessReference", "found a referenced key %p for key reference %ld [%ld]", it->second, keyReference, it->second->keyReference());
 
        return *it->second;
 }
 
        return *it->second;
 }