aboutsummaryrefslogtreecommitdiff
path: root/crypto/rand/randfile.c
diff options
context:
space:
mode:
authorUlf Möller <ulf@openssl.org>2001-02-14 01:35:44 +0000
committerUlf Möller <ulf@openssl.org>2001-02-14 01:35:44 +0000
commit36fafffae21ddbc520dbe316accd2bca4ffac7ba (patch)
tree0cd14afdaa489f43de009bb0f7f8cca8fc5b13c5 /crypto/rand/randfile.c
parentcdc7b8cc6000d2213bc1037df0dd14a48e5d8a2b (diff)
downloadopenssl-36fafffae21ddbc520dbe316accd2bca4ffac7ba.zip
openssl-36fafffae21ddbc520dbe316accd2bca4ffac7ba.tar.gz
openssl-36fafffae21ddbc520dbe316accd2bca4ffac7ba.tar.bz2
New function OPENSSL_issetugid(). Needs more work.
Diffstat (limited to 'crypto/rand/randfile.c')
-rw-r--r--crypto/rand/randfile.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c
index 02f16aa..0a4005b 100644
--- a/crypto/rand/randfile.c
+++ b/crypto/rand/randfile.c
@@ -196,10 +196,11 @@ err:
const char *RAND_file_name(char *buf, int size)
{
- char *s;
+ char *s=NULL;
char *ret=NULL;
- s=getenv("RANDFILE");
+ if (OPENSSL_issetugid() == 0)
+ s=getenv("RANDFILE");
if (s != NULL)
{
strncpy(buf,s,size-1);
@@ -208,16 +209,19 @@ const char *RAND_file_name(char *buf, int size)
}
else
{
- s=getenv("HOME");
- if (s == NULL) return(RFILE);
- if (((int)(strlen(s)+strlen(RFILE)+2)) > size)
- return(RFILE);
- strcpy(buf,s);
+ if (OPENSSL_issetugid() == 0)
+ s=getenv("HOME");
+ if (s != NULL && (strlen(s)+strlen(RFILE)+2 < size))
+ {
+ strcpy(buf,s);
#ifndef VMS
- strcat(buf,"/");
+ strcat(buf,"/");
#endif
- strcat(buf,RFILE);
- ret=buf;
+ strcat(buf,RFILE);
+ ret=buf;
+ }
+ else
+ buf[0] = '\0'; /* no file name */
}
return(ret);
}