#277: libgcrypt and gcry_check_version in a multithreaded application.
-------------------------------------------------+-------------------------
 Reporter:  TMcC                                 |       Owner:
     Type:  defect                               |      Status:  new
 Priority:  normal                               |   Milestone:  1.4.3
Component:  crypto                               |     Version:  1.4.2
 Keywords:  threads, mt, multithreaded, crypto,  |  Blocked By:
  sigabrt, gcry_check_version, gcrpyt,           |
  libgcrypt                                      |
   Blocks:                                       |
-------------------------------------------------+-------------------------
 In a multithreaded application, libssh2_init() ought to call
 gcry_check_version(), or the documentation for libssh2 ought to advise
 that libgcrpyt's gcry_check_version() must be called, before
 libssh2_init() is executed.

 Please see here: http://www.gnupg.org/documentation/manuals/gcrypt-devel
 /Initializing-the-library.html

 Without this call, we get SIGABRTs from gcrpyt.

 In summary, in a multithread application, the sequence of calls should be:

 {{{#!c
  // Enable thread safety for gcrypt.
  int result = gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
  if (!gcry_check_version (GCRYPT_VERSION))
  {
      std::cerr << "libgcrypt version mismatch" << std::endl;
      exit (2);
  }
  libssh2_init();
 }}}

-- 
Ticket URL: <https://trac.libssh2.org/ticket/277>
libssh2 <https://trac.libssh2.org/>
C library for writing portable SSH2 clients

_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to