summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>1996-10-15 09:35:58 +0000
committerderaadt <deraadt@openbsd.org>1996-10-15 09:35:58 +0000
commite612da3172fc466235311c0c8e1dfec4f3a6fd37 (patch)
tree0084ebf1c8d779860402f91badbd0976bc7a7ad8
parentunused variable noticed by asriel(right?), proto from mccanne; fed to freebsd (diff)
downloadwireguard-openbsd-e612da3172fc466235311c0c8e1dfec4f3a6fd37.tar.xz
wireguard-openbsd-e612da3172fc466235311c0c8e1dfec4f3a6fd37.zip
deal with files as euid; based on code by alex@freebsd.org
-rw-r--r--games/adventure/save.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/games/adventure/save.c b/games/adventure/save.c
index e748ad2e25e..9ee1eac3c0d 100644
--- a/games/adventure/save.c
+++ b/games/adventure/save.c
@@ -46,7 +46,9 @@ static char rcsid[] = "$NetBSD: save.c,v 1.2 1995/03/21 12:05:08 cgd Exp $";
#endif
#endif /* not lint */
+#include <sys/types.h>
#include <stdio.h>
+#include <stdlib.h>
#include "hdr.h"
struct savestruct
@@ -129,19 +131,26 @@ char *outfile; /* to output the data using checksum to start random #s */
char *s;
long sum;
int i;
+ uid_t euid_save;
crc_start();
for (p = save_array; p->address != NULL; p++)
sum = crc(p->address, p->width);
srandom((int) sum);
+ euid_save = geteuid();
+ seteuid(getuid());
+
if ((out = fopen(outfile, "wb")) == NULL)
{
fprintf(stderr,
"Hmm. The name \"%s\" appears to be magically blocked.\n",
outfile);
+ seteuid(euid_save);
return 1;
}
+ seteuid(euid_save);
+
fwrite(&sum, sizeof(sum), 1, out); /* Here's the random() key */
for (p = save_array; p->address != NULL; p++)
{
@@ -161,14 +170,21 @@ char *infile;
char *s;
long sum, cksum;
int i;
+ uid_t euid_save;
+
+ euid_save = geteuid();
+ seteuid(euid_save);
if ((in = fopen(infile, "rb")) == NULL)
{
fprintf(stderr,
"Hmm. The file \"%s\" appears to be magically blocked.\n",
infile);
+ seteuid(euid_save);
return 1;
}
+ seteuid(euid_save);
+
fread(&sum, sizeof(sum), 1, in); /* Get the seed */
srandom((int) sum);
for (p = save_array; p->address != NULL; p++)