summaryrefslogtreecommitdiffstats
path: root/tetris/scores.c
diff options
context:
space:
mode:
Diffstat (limited to 'tetris/scores.c')
-rw-r--r--tetris/scores.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/tetris/scores.c b/tetris/scores.c
index a93c2ef5..7f3e4115 100644
--- a/tetris/scores.c
+++ b/tetris/scores.c
@@ -1,4 +1,4 @@
-/* $NetBSD: scores.c,v 1.5 1999/09/08 21:18:00 jsm Exp $ */
+/* $NetBSD: scores.c,v 1.6 1999/09/12 09:02:23 jsm Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -51,6 +51,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
#include <time.h>
#include <termcap.h>
#include <unistd.h>
@@ -96,6 +97,7 @@ getscores(fpp)
FILE **fpp;
{
int sd, mint, lck;
+ mode_t mask;
const char *mstr, *human;
FILE *sf;
@@ -110,10 +112,14 @@ getscores(fpp)
human = "reading";
lck = LOCK_SH;
}
+ setegid(egid);
+ mask = umask(S_IWOTH);
sd = open(_PATH_SCOREFILE, mint, 0666);
+ (void)umask(mask);
if (sd < 0) {
if (fpp == NULL) {
nscores = 0;
+ setegid(gid);
return;
}
(void)fprintf(stderr, "tetris: cannot open %s for %s: %s\n",
@@ -125,6 +131,7 @@ getscores(fpp)
_PATH_SCOREFILE, human, strerror(errno));
exit(1);
}
+ setegid(gid);
/*
* Grab a lock.