diff options
-rw-r--r-- | src/lib/libcrypto/rand/randfile.c | 34 | ||||
-rw-r--r-- | src/lib/libcrypto/threads/mttest.c | 3 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/rand/randfile.c | 34 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/threads/mttest.c | 3 |
4 files changed, 38 insertions, 36 deletions
diff --git a/src/lib/libcrypto/rand/randfile.c b/src/lib/libcrypto/rand/randfile.c index 29718bdb9d..8e993360fa 100644 --- a/src/lib/libcrypto/rand/randfile.c +++ b/src/lib/libcrypto/rand/randfile.c | |||
@@ -215,34 +215,32 @@ err: | |||
215 | 215 | ||
216 | const char *RAND_file_name(char *buf, int size) | 216 | const char *RAND_file_name(char *buf, int size) |
217 | { | 217 | { |
218 | char *s; | 218 | char *s = NULL; |
219 | char *ret=NULL; | 219 | char *ret=NULL; |
220 | struct stat sb; | 220 | struct stat sb; |
221 | 221 | ||
222 | s=getenv("RANDFILE"); | 222 | if (issetugid() == 0) |
223 | if (s != NULL) | 223 | s = getenv("RANDFILE"); |
224 | if (s != NULL && *s && strlen(s) < size) | ||
224 | { | 225 | { |
225 | strncpy(buf,s,size-1); | 226 | strlcpy(buf,s,size); |
226 | buf[size-1]='\0'; | ||
227 | ret=buf; | 227 | ret=buf; |
228 | } | 228 | } |
229 | else | 229 | else |
230 | { | 230 | { |
231 | s=getenv("HOME"); | 231 | if (issetugid() == 0) |
232 | if (s == NULL || *s == '\0') | 232 | s=getenv("HOME"); |
233 | ret = RFILE; | 233 | if (s && *s && strlen(s)+strlen(RFILE)+2 < size) |
234 | if (((int)(strlen(s)+strlen(RFILE)+2)) > size) | ||
235 | ret=RFILE; | ||
236 | else | ||
237 | { | 234 | { |
238 | strlcpy(buf,s,size); | 235 | strlcpy(buf,s,size); |
239 | #ifndef VMS | 236 | #ifndef VMS |
240 | strcat(buf,"/"); | 237 | strcat(buf,"/"); |
241 | #endif | 238 | #endif |
242 | strlcat(buf,RFILE,size); | 239 | strlcat(buf,RFILE,size); |
243 | ret=buf; | 240 | ret=buf; |
244 | } | 241 | } |
245 | } | 242 | } |
243 | |||
246 | #ifdef DEVRANDOM | 244 | #ifdef DEVRANDOM |
247 | /* given that all random loads just fail if the file can't be | 245 | /* given that all random loads just fail if the file can't be |
248 | * seen on a stat, we stat the file we're returning, if it | 246 | * seen on a stat, we stat the file we're returning, if it |
@@ -251,9 +249,11 @@ const char *RAND_file_name(char *buf, int size) | |||
251 | * to something hopefully decent if that isn't available. | 249 | * to something hopefully decent if that isn't available. |
252 | */ | 250 | */ |
253 | 251 | ||
252 | if (ret == NULL) | ||
253 | ret = DEVRANDOM; | ||
254 | |||
254 | if (stat(ret,&sb) == -1) | 255 | if (stat(ret,&sb) == -1) |
255 | ret = DEVRANDOM; | 256 | ret = DEVRANDOM; |
256 | #endif | 257 | #endif |
257 | return(ret); | 258 | return(ret); |
258 | } | 259 | } |
259 | |||
diff --git a/src/lib/libcrypto/threads/mttest.c b/src/lib/libcrypto/threads/mttest.c index 100165948c..019add4d9c 100644 --- a/src/lib/libcrypto/threads/mttest.c +++ b/src/lib/libcrypto/threads/mttest.c | |||
@@ -248,7 +248,8 @@ bad: | |||
248 | goto end; | 248 | goto end; |
249 | } | 249 | } |
250 | 250 | ||
251 | if (cipher == NULL) cipher=getenv("SSL_CIPHER"); | 251 | if (cipher == NULL && issetugid() == 0) |
252 | cipher=getenv("SSL_CIPHER"); | ||
252 | 253 | ||
253 | SSL_load_error_strings(); | 254 | SSL_load_error_strings(); |
254 | OpenSSL_add_ssl_algorithms(); | 255 | OpenSSL_add_ssl_algorithms(); |
diff --git a/src/lib/libssl/src/crypto/rand/randfile.c b/src/lib/libssl/src/crypto/rand/randfile.c index 29718bdb9d..8e993360fa 100644 --- a/src/lib/libssl/src/crypto/rand/randfile.c +++ b/src/lib/libssl/src/crypto/rand/randfile.c | |||
@@ -215,34 +215,32 @@ err: | |||
215 | 215 | ||
216 | const char *RAND_file_name(char *buf, int size) | 216 | const char *RAND_file_name(char *buf, int size) |
217 | { | 217 | { |
218 | char *s; | 218 | char *s = NULL; |
219 | char *ret=NULL; | 219 | char *ret=NULL; |
220 | struct stat sb; | 220 | struct stat sb; |
221 | 221 | ||
222 | s=getenv("RANDFILE"); | 222 | if (issetugid() == 0) |
223 | if (s != NULL) | 223 | s = getenv("RANDFILE"); |
224 | if (s != NULL && *s && strlen(s) < size) | ||
224 | { | 225 | { |
225 | strncpy(buf,s,size-1); | 226 | strlcpy(buf,s,size); |
226 | buf[size-1]='\0'; | ||
227 | ret=buf; | 227 | ret=buf; |
228 | } | 228 | } |
229 | else | 229 | else |
230 | { | 230 | { |
231 | s=getenv("HOME"); | 231 | if (issetugid() == 0) |
232 | if (s == NULL || *s == '\0') | 232 | s=getenv("HOME"); |
233 | ret = RFILE; | 233 | if (s && *s && strlen(s)+strlen(RFILE)+2 < size) |
234 | if (((int)(strlen(s)+strlen(RFILE)+2)) > size) | ||
235 | ret=RFILE; | ||
236 | else | ||
237 | { | 234 | { |
238 | strlcpy(buf,s,size); | 235 | strlcpy(buf,s,size); |
239 | #ifndef VMS | 236 | #ifndef VMS |
240 | strcat(buf,"/"); | 237 | strcat(buf,"/"); |
241 | #endif | 238 | #endif |
242 | strlcat(buf,RFILE,size); | 239 | strlcat(buf,RFILE,size); |
243 | ret=buf; | 240 | ret=buf; |
244 | } | 241 | } |
245 | } | 242 | } |
243 | |||
246 | #ifdef DEVRANDOM | 244 | #ifdef DEVRANDOM |
247 | /* given that all random loads just fail if the file can't be | 245 | /* given that all random loads just fail if the file can't be |
248 | * seen on a stat, we stat the file we're returning, if it | 246 | * seen on a stat, we stat the file we're returning, if it |
@@ -251,9 +249,11 @@ const char *RAND_file_name(char *buf, int size) | |||
251 | * to something hopefully decent if that isn't available. | 249 | * to something hopefully decent if that isn't available. |
252 | */ | 250 | */ |
253 | 251 | ||
252 | if (ret == NULL) | ||
253 | ret = DEVRANDOM; | ||
254 | |||
254 | if (stat(ret,&sb) == -1) | 255 | if (stat(ret,&sb) == -1) |
255 | ret = DEVRANDOM; | 256 | ret = DEVRANDOM; |
256 | #endif | 257 | #endif |
257 | return(ret); | 258 | return(ret); |
258 | } | 259 | } |
259 | |||
diff --git a/src/lib/libssl/src/crypto/threads/mttest.c b/src/lib/libssl/src/crypto/threads/mttest.c index 100165948c..019add4d9c 100644 --- a/src/lib/libssl/src/crypto/threads/mttest.c +++ b/src/lib/libssl/src/crypto/threads/mttest.c | |||
@@ -248,7 +248,8 @@ bad: | |||
248 | goto end; | 248 | goto end; |
249 | } | 249 | } |
250 | 250 | ||
251 | if (cipher == NULL) cipher=getenv("SSL_CIPHER"); | 251 | if (cipher == NULL && issetugid() == 0) |
252 | cipher=getenv("SSL_CIPHER"); | ||
252 | 253 | ||
253 | SSL_load_error_strings(); | 254 | SSL_load_error_strings(); |
254 | OpenSSL_add_ssl_algorithms(); | 255 | OpenSSL_add_ssl_algorithms(); |