Commit dd0b1e8cb643371326991428c7ad8fc9a61a5e1e

Patrick Steinhardt 2017-03-20T09:13:25

openssl_stream: fix releasing OpenSSL locks The OpenSSL library may require multiple locks to work correctly, where it is the caller's responsibility to initialize and release the locks. While we correctly initialized up to `n` locks, as determined by `CRYPTO_num_locks`, we were repeatedly freeing the same mutex in our shutdown procedure. Fix the issue by freeing locks at the correct index.

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/openssl_stream.c b/src/openssl_stream.c
index bb9b32c..c0a9c3c 100644
--- a/src/openssl_stream.c
+++ b/src/openssl_stream.c
@@ -66,7 +66,7 @@ static void shutdown_ssl_locking(void)
 	CRYPTO_set_locking_callback(NULL);
 
 	for (i = 0; i < num_locks; ++i)
-		git_mutex_free(openssl_locks);
+		git_mutex_free(&openssl_locks[i]);
 	git__free(openssl_locks);
 }