X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/04f4d7044367099914cf1906ae27ac20c24e44cf..eff6047a366924e7f864e4f19335619f3236fce9:/snake/snscore/snscore.c diff --git a/snake/snscore/snscore.c b/snake/snscore/snscore.c index b5f57cf3..b09d5180 100644 --- a/snake/snscore/snscore.c +++ b/snake/snscore/snscore.c @@ -1,4 +1,4 @@ -/* $NetBSD: snscore.c,v 1.9 1999/09/08 21:18:00 jsm Exp $ */ +/* $NetBSD: snscore.c,v 1.17 2008/07/20 01:03:22 lukem Exp $ */ /* * Copyright (c) 1980, 1993 @@ -12,11 +12,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -35,15 +31,15 @@ #include #ifndef lint -__COPYRIGHT("@(#) Copyright (c) 1980, 1993\n\ - The Regents of the University of California. All rights reserved.\n"); +__COPYRIGHT("@(#) Copyright (c) 1980, 1993\ + The Regents of the University of California. All rights reserved."); #endif /* not lint */ #ifndef lint #if 0 static char sccsid[] = "@(#)snscore.c 8.1 (Berkeley) 7/19/93"; #else -__RCSID("$NetBSD: snscore.c,v 1.9 1999/09/08 21:18:00 jsm Exp $"); +__RCSID("$NetBSD: snscore.c,v 1.17 2008/07/20 01:03:22 lukem Exp $"); #endif #endif /* not lint */ @@ -53,6 +49,7 @@ __RCSID("$NetBSD: snscore.c,v 1.9 1999/09/08 21:18:00 jsm Exp $"); #include #include #include +#include #include "pathnames.h" const char *recfile = _PATH_RAWSCORES; @@ -64,7 +61,7 @@ struct player { char *name; } players[MAXPLAYERS], temp; -int main __P((void)); +int main(void); int main() @@ -77,18 +74,24 @@ main() const char *q; struct passwd *p; + /* Revoke setgid privileges */ + setgid(getgid()); + fd = fopen(recfile, "r"); if (fd == NULL) err(1, "opening `%s'", recfile); printf("Snake players scores to date\n"); - fread(&whoallbest, sizeof(short), 1, fd); + if (fread(&whoallbest, sizeof(short), 1, fd) == 0) { + printf("No scores recorded yet!\n"); + exit(0); + } fread(&allbest, sizeof(short), 1, fd); noplayers = 0; for (uid = 2; ;uid++) { if(fread(&score, sizeof(short), 1, fd) == 0) break; if (score > 0) { - if (noplayers > MAXPLAYERS) { + if (noplayers >= MAXPLAYERS) { printf("too many players\n"); exit(2); } @@ -98,8 +101,9 @@ main() if (p == NULL) continue; q = p -> pw_name; - players[noplayers].name = malloc(strlen(q) + 1); - strcpy(players[noplayers].name, q); + players[noplayers].name = strdup(q); + if (players[noplayers].name == NULL) + err(1, NULL); noplayers++; } }