NetworkManager/crypto-init.patch

62 lines
1.6 KiB
Diff

diff -up NetworkManager-0.7.0/libnm-util/crypto_nss.c.crypto-init NetworkManager-0.7.0/libnm-util/crypto_nss.c
--- NetworkManager-0.7.0/libnm-util/crypto_nss.c.crypto-init 2008-08-22 12:14:12.000000000 -0400
+++ NetworkManager-0.7.0/libnm-util/crypto_nss.c 2008-09-11 16:22:29.000000000 -0400
@@ -29,27 +29,39 @@
#include <pk11pub.h>
#include <pkcs11t.h>
#include <cert.h>
+#include <prerror.h>
#include "crypto.h"
-static guint32 refcount = 0;
+static gboolean initialized = FALSE;
gboolean
crypto_init (GError **error)
{
- if (refcount == 0) {
- PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 1);
- NSS_NoDB_Init (NULL);
+ SECStatus ret;
+
+ if (initialized)
+ return TRUE;
+
+ PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 1);
+ ret = NSS_NoDB_Init (NULL);
+ if (ret != SECSuccess) {
+ PR_Cleanup ();
+ g_set_error (error, NM_CRYPTO_ERROR,
+ 0,
+ _("Failed to initialize the crypto engine: %d."),
+ PR_GetError ());
+ return FALSE;
}
- refcount++;
+
+ initialized = TRUE;
return TRUE;
}
void
crypto_deinit (void)
{
- refcount--;
- if (refcount == 0) {
+ if (initialized) {
NSS_Shutdown ();
PR_Cleanup ();
}
diff -up NetworkManager-0.7.0/libnm-util/nm-utils.c.crypto-init NetworkManager-0.7.0/libnm-util/nm-utils.c
--- NetworkManager-0.7.0/libnm-util/nm-utils.c.crypto-init 2008-08-22 12:14:12.000000000 -0400
+++ NetworkManager-0.7.0/libnm-util/nm-utils.c 2008-09-11 16:19:25.000000000 -0400
@@ -1152,7 +1152,6 @@ nm_utils_uuid_generate_from_string (cons
out:
g_free (uuid);
- crypto_deinit ();
return buf;
}