Hi,

I have debug assertions in EVP_PKEY_free() using the following code:

-------------------------
#include <windows.h>

#include <string>
#include <iostream>

#include "openssl/ssl.h"
#include "openssl/conf.h"
#include "openssl/engine.h"
#include "openssl/pkcs12.h"

using namespace std;

int main()
{
        ENGINE          *m_engine;
        EVP_PKEY                *m_pkey;
        int                     rtc;
        string          pin="****";
        string          key_id;

        SSL_load_error_strings();       // Initialisierung Fehlerstrings
        SSL_library_init();             // Initialisierung Library
        PKCS12_PBE_add();               // Initialisierung PKCS#12-Library
        OPENSSL_config(NULL);           // Einlesen der Konfiguration (ueber 
Environment OPENSSL_CONF)

//      actions_to_seed_PRNG();

        try
        {
                m_engine = ENGINE_by_id("pkcs11");
                if(!m_engine)
                {
                        throw 1;
                }

                // Engine initialisieren
                rtc = ENGINE_init(m_engine);
                if(rtc <= 0)
                {
                        ENGINE_free(m_engine);
                        m_engine = NULL;
                        throw 2;
                }

                // PIN an die Engine uebergeben
                rtc = ENGINE_ctrl_cmd_string(m_engine, "PIN", pin.c_str(), 0);
                if(rtc <= 0)
                {
                        ENGINE_finish(m_engine);
                        ENGINE_free(m_engine);
                        m_engine = NULL;
                        throw 3;
                }

                // Der Engine den privaten Schluessel bekannt machen
                m_pkey = ENGINE_load_private_key(m_engine, key_id.c_str(), 
NULL, NULL);
                if (m_pkey == NULL)
                {
                        ENGINE_finish(m_engine);
                        ENGINE_free(m_engine);
                        m_engine = NULL;
                        throw 4;
                }
        }

        catch (int e)
        {
                cout << "Exception " << e << " occured" << endl;
                return -1;
        }

        EVP_PKEY_free(m_pkey);
        m_pkey = NULL;
}
-------------------------


In summary, I get 5 debug assertions:

1.) Expression: _CrtIsValidHeapPointer(pUserData)
2.) Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
3.) DAMAGE: before Free block (#262147) at 0x00BF8488
4.) DAMAGE: after Free block (#262147) at 0x00BF8488
5.) Expression: pHead->nBlockUse == nBlockUse


My environment: Windows XP SP2, MS Visual Studio .NET 2003 with active 
configuration "Debug", OpenSSL 0.9.8e


Any suggestions?


Greetings,

Stefan Blomen

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to