Bug 585301 - Use ~/.pki/nssdb for NSS SQL database, not Evolution directory.
authorDavid Woodhouse <David.Woodhouse@intel.com>
Sat, 12 Jun 2010 23:07:47 +0000 (00:07 +0100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Mon, 14 Jun 2010 10:08:00 +0000 (11:08 +0100)
This is where the user-specific part of the 'shared system database' goes,
and is what Chrome uses. When the system _isn't_ configured to use the
shared system database, this is what we should be using.

camel/camel.c

index abab57b..a54064b 100644 (file)
@@ -121,17 +121,24 @@ camel_init (const gchar *configdir, gboolean nss_init)
                if (nss_has_system_db ()) {
                        nss_sql_configdir = g_strdup ("sql:" NSS_SYSTEM_DB );
                } else {
-                       /* Create the configdir if it does not exist
-                        * This prevents camel from bailing out on first run */
+                       /* On Windows, we use the Evolution configdir. On other
+                        * operating systems we use ~/.pki/nssdb/, which is where
+                        * the user-specific part of the "shared system db" is
+                        * stored and is what Chrome uses too.
+                        *
+                        * We have to create the configdir if it does not exist,
+                        * to prevent camel from bailing out on first run. */
+#ifdef G_OS_WIN32
                        g_mkdir_with_parents (configdir, 0700);
-
-                       /* XXX Currently we store the new shared NSS database in the
-                        *     same location we kept the original NSS databases in,
-                        *     but at least we have safe shared access between Camel
-                        *     and Evolution's S/MIME.  Once freedesktop.org comes
-                        *     up with a user-wide shared location, we should use
-                        *     that instead. */
                        nss_sql_configdir = g_strconcat ("sql:", nss_configdir, NULL);
+#else
+                       gchar *user_nss_dir = g_build_filename ( g_get_home_dir (),
+                                                                ".pki/nssdb", NULL );
+                       g_mkdir_with_parents (user_nss_dir, 0700);
+
+                       nss_sql_configdir = g_strconcat ("sql:", user_nss_dir, NULL);
+                       g_free(user_nss_dir);
+#endif
                }