On Sun, Dec 11, 2011, cellecial wrote:

> Hi,
> 
>     I wrote a simple pkcs12 demo(under Windows), it just read from a PKCS12
> file and got private key and certificate.
>     If I use single thread, it works fine.
>     If I use multi-thread, it works fine for a while ,then popups an error
> dialogue "heap is corrupt".If I debug it in Visual Studio,it points to
> PKCS12_parse() .
>     If I use EnterCriticalSection and LeaveCriticalSection with
> multi-thread, it works fine too, but as you know, the effect is as same as
> single thread does.
> 
>    So I want to know , what shared resource is protected by
> CriticalSection? Is PKCS12_parse() not thread-safe? Can it  be executed in
> multi-threads without mutex?
> 
> int pkcs12test(unsigned char *p12buf, int p12buflen, unsigned char *p12pswd)
> {
>  PKCS12           *p12;
>  X509             *cert;
>  EVP_PKEY         *prvkey;
>  int              len;
>  char             buf[4096];
>  int              i=0;
>  char     desc[1000];
> 
>  OpenSSL_add_all_algorithms();
> 

At least one problem is the above line. You should call
OpenSSL_add_all_algorithm() *once* before starting threads. 

Steve.
--
Dr Stephen N. Henson. OpenSSL project core developer.
Commercial tech support now available see: http://www.openssl.org
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to