In CRYPTO_lock(), check that the application cares about locking (provided
authorRichard Levitte <levitte@openssl.org>
Wed, 11 Dec 2002 08:56:38 +0000 (08:56 +0000)
committerRichard Levitte <levitte@openssl.org>
Wed, 11 Dec 2002 08:56:38 +0000 (08:56 +0000)
callbacks) before attempting to lock.

crypto/cryptlib.c

index e0e7bb1d261ba67d3dbd01028fef70deca4bd1f4..aa87ffd6ec77fdd08a0dadc0a554e7d199b787f8 100644 (file)
@@ -409,18 +409,17 @@ void CRYPTO_lock(int mode, int type, const char *file, int line)
 #endif
        if (type < 0)
                {
-               int i = -type - 1;
-               struct CRYPTO_dynlock_value *pointer
-                       = CRYPTO_get_dynlock_value(i);
+               if (dynlock_lock_callback != NULL)
+                       {
+                       struct CRYPTO_dynlock_value *pointer
+                               = CRYPTO_get_dynlock_value(type);
 
-               assert(pointer != NULL);
+                       assert(pointer != NULL);
 
-               if (dynlock_lock_callback)
-                       {
                        dynlock_lock_callback(mode, pointer, file, line);
-                       }
 
-               CRYPTO_destroy_dynlockid(i);
+                       CRYPTO_destroy_dynlockid(type);
+                       }
                }
        else
                if (locking_callback != NULL)