Skip to content

Commit 746d250

Browse files
committed
CDRIVER-555: Segfault during OpenSSL cleanup routines
1 parent 64788c1 commit 746d250

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/mongoc/mongoc-ssl.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -535,16 +535,21 @@ _mongoc_ssl_thread_startup (void)
535535
mongoc_mutex_init(&gMongocSslThreadLocks[i]);
536536
}
537537

538-
CRYPTO_set_locking_callback (_mongoc_ssl_thread_locking_callback);
539-
CRYPTO_set_id_callback (_mongoc_ssl_thread_id_callback);
538+
if (!CRYPTO_get_locking_callback ()) {
539+
CRYPTO_set_locking_callback (_mongoc_ssl_thread_locking_callback);
540+
CRYPTO_set_id_callback (_mongoc_ssl_thread_id_callback);
541+
}
540542
}
541543

542544
static void
543545
_mongoc_ssl_thread_cleanup (void)
544546
{
545547
int i;
546548

547-
CRYPTO_set_locking_callback (NULL);
549+
if (CRYPTO_get_locking_callback () == _mongoc_ssl_thread_locking_callback) {
550+
CRYPTO_set_locking_callback (NULL);
551+
CRYPTO_set_id_callback (NULL);
552+
}
548553

549554
for (i = 0; i < CRYPTO_num_locks (); i++) {
550555
mongoc_mutex_destroy (&gMongocSslThreadLocks[i]);

0 commit comments

Comments
 (0)