]> granicus.if.org Git - curl/commitdiff
added aditional check for the directory specified with SSL_DIR, and fall back to...
authorGunter Knauf <gk@gknw.de>
Mon, 21 Sep 2009 22:46:38 +0000 (22:46 +0000)
committerGunter Knauf <gk@gknw.de>
Mon, 21 Sep 2009 22:46:38 +0000 (22:46 +0000)
lib/nss.c

index ae07304795fa409eb4059e88a87b09424e64664d..dbb9a57faf1198f28e6e87b4b0a5e5d143999562 100644 (file)
--- a/lib/nss.c
+++ b/lib/nss.c
@@ -964,16 +964,23 @@ CURLcode Curl_nss_connect(struct connectdata *conn, int sockindex)
   /* FIXME. NSS doesn't support multiple databases open at the same time. */
   PR_Lock(nss_initlock);
   if(!initialized) {
+    struct_stat st;
 
-    certDir = getenv("SSL_DIR"); /* Look in $SSL_DIR */
+    /* First we check if $SSL_DIR points to a valid dir */
+    certDir = getenv("SSL_DIR");
+    if(certDir) {
+      if((stat(certDir, &st) != 0) ||
+              (!S_ISDIR(st.st_mode))) {
+        certDir = NULL;
+      }
+    }
 
+    /* Now we check if the default location is a valid dir */
     if(!certDir) {
-      struct_stat st;
-
-      if(stat(SSL_DIR, &st) == 0)
-        if(S_ISDIR(st.st_mode)) {
-          certDir = (char *)SSL_DIR;
-        }
+      if((stat(SSL_DIR, &st) == 0) &&
+              (S_ISDIR(st.st_mode))) {
+        certDir = (char *)SSL_DIR;
+      }
     }
 
     if (!NSS_IsInitialized()) {