diff -up ./mozilla/security/nss/lib/sysinit/nsssysinit.c.orig ./mozilla/security/nss/lib/sysinit/nsssysinit.c --- ./mozilla/security/nss/lib/sysinit/nsssysinit.c.orig 2010-06-17 09:17:30.732643399 -0700 +++ ./mozilla/security/nss/lib/sysinit/nsssysinit.c 2010-06-17 09:20:22.691642397 -0700 @@ -263,9 +263,18 @@ get_list(char *filename, char *stripped_ sysdb = getSystemDB(); userdb = getUserDB(); - /* Don't open root's user DB */ + /* return a list of databases to open. First the system database. */ + if (sysdb) { + const char *readonly = userCanModifySystemDB() ? "" : "flags=readonly"; + module_list[next++] = PR_smprintf( + "library= " + "module=\"NSS system database\" " + "parameters=\"configdir='sql:%s' tokenDescription='NSS system database' %s\" " + "NSS=\"%sflags=internal,critical\"",sysdb, readonly, nssflags); + } + + /* Next the user database, but not for root. */ if (userdb != NULL && !userIsRoot()) { - /* return a list of databases to open. First the user Database */ module_list[next++] = PR_smprintf( "library= " "module=\"NSS User database\" " @@ -284,40 +293,6 @@ get_list(char *filename, char *stripped_ userdb, stripped_parameters); } -#if 0 - /* This doesn't actually work. If we register - both this and the sysdb (in either order) - then only one of them actually shows up */ - - /* Using a NULL filename as a Boolean flag to - * prevent registering both an application-defined - * db and the system db. rhbz #546211. - */ - PORT_Assert(filename); - if (sysdb && PL_CompareStrings(filename, sysdb)) - filename = NULL; - else if (userdb && PL_CompareStrings(filename, userdb)) - filename = NULL; - - if (filename && !userIsRoot()) { - module_list[next++] = PR_smprintf( - "library= " - "module=\"NSS database\" " - "parameters=\"configdir='sql:%s' tokenDescription='NSS database sql:%s'\" " - "NSS=\"%sflags=internal\"",filename, filename, nssflags); - } -#endif - - /* now the system database (always read only unless it's root) */ - if (sysdb) { - const char *readonly = userCanModifySystemDB() ? "" : "flags=readonly"; - module_list[next++] = PR_smprintf( - "library= " - "module=\"NSS system database\" " - "parameters=\"configdir='sql:%s' tokenDescription='NSS system database' %s\" " - "NSS=\"%sflags=internal,critical\"",sysdb, readonly, nssflags); - } - /* that was the last module */ module_list[next] = 0;