summary refs log tree commit diff
path: root/pkgs/development/libraries/openssl/cert-file.patch
blob: 26b51c0295e0dbfb41e72a0783ff411d7b948f5f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
diff -ru -x '*~' openssl-1.0.0e-orig/crypto/x509/x509_def.c openssl-1.0.0e/crypto/x509/x509_def.c
--- openssl-1.0.0e-orig/crypto/x509/x509_def.c	1999-09-11 19:54:11.000000000 +0200
+++ openssl-1.0.0e/crypto/x509/x509_def.c	2011-09-12 18:30:59.386501609 +0200
@@ -57,6 +57,10 @@
  */
 
 #include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <unistd.h>
+#include <sys/types.h>
 #include "cryptlib.h"
 #include <openssl/crypto.h>
 #include <openssl/x509.h>
@@ -71,7 +75,25 @@
 	{ return(X509_CERT_DIR); }
 
 const char *X509_get_default_cert_file(void)
-	{ return(X509_CERT_FILE); }
+	{
+	static char buf[PATH_MAX] = X509_CERT_FILE;
+	static int init = 0;
+	if (!init) {
+	    init = 1;
+	    char * s = getenv("OPENSSL_X509_CERT_FILE");
+	    if (s) {
+#ifndef OPENSSL_SYS_WINDOWS
+	        if (getuid() == geteuid()) {
+#endif
+		        strncpy(buf, s, sizeof(buf));
+		        buf[sizeof(buf) - 1] = 0;
+#ifndef OPENSSL_SYS_WINDOWS
+	        }
+#endif
+	    }
+	}
+	return buf;
+	}
 
 const char *X509_get_default_cert_dir_env(void)
 	{ return(X509_CERT_DIR_EVP); }