diff --git a/libcacard/vcard_emul_nss.c b/libcacard/vcard_emul_nss.c index df79476db8778df39f9c8508adf3f4d405907a43..21d468931384a8fa9ff158edd24349c677906014 100644 --- a/libcacard/vcard_emul_nss.c +++ b/libcacard/vcard_emul_nss.c @@ -893,7 +893,23 @@ vcard_emul_init(const VCardEmulOptions *options) if (options->nss_db) { rv = NSS_Init(options->nss_db); } else { - rv = NSS_Init("sql:/etc/pki/nssdb"); + gchar *path, *db; +#ifndef _WIN32 + path = g_strdup("/etc/pki/nssdb"); +#else + if (g_get_system_config_dirs() == NULL || + g_get_system_config_dirs()[0] == NULL) { + return VCARD_EMUL_FAIL; + } + + path = g_build_filename( + g_get_system_config_dirs()[0], "pki", "nssdb", NULL); +#endif + db = g_strdup_printf("sql:%s", path); + + rv = NSS_Init(db); + g_free(db); + g_free(path); } if (rv != SECSuccess) { return VCARD_EMUL_FAIL;