$HOME/.pki/nssdb is now considered automatically if /etc/pki/nssdb does not exist
authorWolfgang Rosenauer <wr@rosenauer.org>
Thu, 08 Dec 2011 21:55:40 +0100
changeset 1 98d01e6fd2bd
parent 0 262e1fb001a8
child 2 5e00ba645d66
$HOME/.pki/nssdb is now considered automatically if /etc/pki/nssdb does not exist
configure.ac
nss-shared-helper/db.c
--- a/configure.ac	Fri Jul 09 09:55:01 2010 +0200
+++ b/configure.ac	Thu Dec 08 21:55:40 2011 +0100
@@ -8,7 +8,7 @@
 
 dnl --- Package configuration ---
 
-AM_INIT_AUTOMAKE(nss-shared-helper, 1.0.9)
+AM_INIT_AUTOMAKE(nss-shared-helper, 1.0.10)
 AM_CONFIG_HEADER(config.h)
 
 AC_SUBST(VERSION)
--- a/nss-shared-helper/db.c	Fri Jul 09 09:55:01 2010 +0200
+++ b/nss-shared-helper/db.c	Thu Dec 08 21:55:40 2011 +0100
@@ -3,7 +3,7 @@
 /* db.c - Helper funcs for shared NSS database
  *
  * Copyright (C) 2008 Hans Petter Jansson
- *               2008-2010 Wolfgang Rosenauer
+ *               2008-2011 Wolfgang Rosenauer
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -20,7 +20,7 @@
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  *
- * Authors: Hans Petter Jansson <hpj@copyleft.no> 
+ * Authors: Hans Petter Jansson <hpj@copyleft.no>
  *          Wolfgang Rosenauer <wr@rosenauer.org> */
 
 #include <sys/types.h>
@@ -56,34 +56,32 @@
 {
   const char  *env;
   char        *path;
+  char         system_path[] = DEFAULT_PATH;
   struct stat  sbuf;
   int          result;
 
   env = getenv ("NSS_SHARED_DB_PATH");
-  
+
+  /*
+   * 1. use env NSS_SHARED_DB_PATH
+   * 2. try /etc/pki/nssdb
+   * 3. use $HOME/.pki/nssdb
+   */
   if (env && *env) {
     path = strdup (env);
   } else {
-    /*
     env = getenv ("HOME");
-    if (!env || !*env)
+    if (env && *env)
     {
-      fprintf (stderr, "*** nss-shared-helper: Could not determine shared NSS DB path!\n");
-      return NULL;
+      path = malloc (strlen (env) + 1 + strlen (DEFAULT_RELATIVE_PATH) + 1);
+      strcpy (path, env);
+      strcat (path, "/");
+      strcat (path, DEFAULT_RELATIVE_PATH);
     }
-
-    path = malloc (strlen (env) + 1 + strlen (DEFAULT_RELATIVE_PATH) + 1);
-    strcpy (path, env);
-    strcat (path, "/");
-    strcat (path, DEFAULT_RELATIVE_PATH);
-    */
-    path = strdup(DEFAULT_PATH);
   }
 
   /* Create path if it doesn't exist */
-
   result = stat (path, &sbuf);
-
   if (result != 0)
   {
     const char *p0 = path;
@@ -112,11 +110,14 @@
       p0 = p1 + 1;
     }
     while (*p1 != '\0');
-
-    result = stat (path, &sbuf);
   }
 
-  if (result == 0 && S_ISDIR (sbuf.st_mode))
+  /* /etc/pki/nssdb */
+  if (stat(system_path, &sbuf) == 0 && S_ISDIR (sbuf.st_mode))
+    return system_path;
+
+  /* $HOME/.pki/nssdb */
+  if (stat(path, &sbuf) == 0 && S_ISDIR (sbuf.st_mode))
     return path;
 
   free (path);
@@ -136,7 +137,7 @@
 
   if (!getenv ("NSS_USE_SHARED_DB"))
   {
-    fprintf (stderr, "*** nss-shared-helper: Shared database disabled (set NSS_USE_SHARED_DB to enable).\n");
+    //fprintf (stderr, "*** nss-shared-helper: Shared database disabled (set NSS_USE_SHARED_DB to enable).\n");
 
     rv = NSS_Initialize (old_path,
                          "", "", "secmod.db",