diff options
Diffstat (limited to 'tetris/scores.c')
| -rw-r--r-- | tetris/scores.c | 9 |
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. |
