diff options
Diffstat (limited to '')
| -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(); | 
