]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Corrected locking usage in nettle's random subsystem.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 3 Jul 2010 23:03:47 +0000 (01:03 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 3 Jul 2010 23:03:47 +0000 (01:03 +0200)
lib/nettle/rnd.c

index fe0696dda91d6f507c169197f8129a9347be4192..84ef1a8c7db32902a68c22f8a529a9cbe65dd5e8 100644 (file)
@@ -41,8 +41,8 @@
 
 static void* rnd_mutex;
 
-#define RND_LOCK if (gnutls_mutex_lock(rnd_mutex)!=0) abort()
-#define RND_UNLOCK if (gnutls_mutex_unlock(rnd_mutex)!=0) abort()
+#define RND_LOCK if (gnutls_mutex_lock(&rnd_mutex)!=0) abort()
+#define RND_UNLOCK if (gnutls_mutex_unlock(&rnd_mutex)!=0) abort()
 
 enum {
        RANDOM_SOURCE_TRIVIA=0,
@@ -170,20 +170,20 @@ static void wrap_nettle_rnd_deinit(void* ctx)
        RND_LOCK;
        close(device_fd);
        RND_UNLOCK;
+
+       gnutls_mutex_deinit(&rnd_mutex);
+       rnd_mutex = NULL;
 }
 
 static int wrap_nettle_rnd_init(void **ctx)
 {
 int ret;
 
-       if (gnutls_mutex_init)
+       ret = gnutls_mutex_init(&rnd_mutex);
+       if (ret < 0)
          {
-           ret = gnutls_mutex_init(&rnd_mutex);
-           if (ret < 0)
-             {
-               gnutls_assert();
-               return ret;
-             }
+           gnutls_assert();
+           return ret;
          }
 
        yarrow256_init(&yctx, SOURCES, ysources);