Do not install makelev setuid root, so that nobody but root can edit files

in ${PREFIX}/. Users can still create levels in their directories if the file
name has a /.
Golddig is now setgid games so that it can update the score file (the file
is no more world writable)
This commit is contained in:
Jean-Marc Zucconi 2000-05-01 20:25:40 +00:00
parent 12a4b82692
commit 0a498f3afe
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=28248
2 changed files with 70 additions and 37 deletions

View File

@ -1,19 +1,26 @@
*** shared.c~ Thu Dec 14 20:41:02 1989
--- shared.c Sun Nov 20 00:59:30 1994
***************
*** 58,64 ****
#include "bitmap/window.bits"
#include "bitmap/anti.bits"
! char *sprintf(); /* UNIX brain damage */
/* All in and out movements except up */
#define NOUPBITS DLEAVE | LLEAVE | RLEAVE | HENTER | VENTER
--- 58,64 ----
#include "bitmap/window.bits"
#include "bitmap/anti.bits"
! /* char *sprintf(); /* UNIX brain damage */
/* All in and out movements except up */
#define NOUPBITS DLEAVE | LLEAVE | RLEAVE | HENTER | VENTER
--- shared.c.orig Mon May 1 18:20:48 2000
+++ shared.c Mon May 1 18:25:28 2000
@@ -58,7 +58,7 @@
#include "bitmap/window.bits"
#include "bitmap/anti.bits"
-char *sprintf(); /* UNIX brain damage */
+/* char *sprintf(); /* UNIX brain damage */
/* All in and out movements except up */
#define NOUPBITS DLEAVE | LLEAVE | RLEAVE | HENTER | VENTER
@@ -316,8 +316,12 @@
/* Manufaction the file name by starting with the world name and */
/* appending the level number to it. */
- strcpy(filename,LIB);
- strcat(filename,"/");
+ if (strchr (worldname, '/'))
+ *filename = 0;
+ else {
+ strcpy(filename,LIB);
+ strcat(filename,"/");
+ }
strcat(filename,worldname);
sprintf(filename + strlen(filename),"%03d",levelnum);
/* Open level file for reading */

View File

@ -1,31 +1,57 @@
--- Makefile.orig Sun Apr 30 18:59:40 2000
+++ Makefile Sun Apr 30 19:01:22 2000
@@ -34,23 +34,25 @@
--- Makefile.orig Mon May 1 18:11:58 2000
+++ Makefile Mon May 1 18:11:59 2000
@@ -9,40 +9,44 @@
# Name of level editor executable
EDITOR = makelev
# Directory where games binaries are stored
-BIN = /usr/public/${HOSTTYPE}/games
+BIN = ${PREFIX}/bin
# Directory where the library for this game will be stored
-LIB = /usr/public/sun3/games/lib/${GAME}
+LIB = ${PREFIX}/lib/${GAME}
# Directory where manual pages are kept
-MANEXT = p
-MAN = /usr/public/man/man${MANEXT}
+MANEXT = 6
+MAN = ${PREFIX}/man/man${MANEXT}
# Font used to display score
SCOREFONT = -adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1
# Height of SCOREFONT
SCORESIZE = 18
# Common compilers
-#CC = cc
-CC = gcc
+CC = cc
+#CC = gcc
# Some common choices for CFLAGS.
#CFLAGS = -O2
#CFLAGS = -O
-CFLAGS = -O -W -Wreturn-type -Wunused -g -finline-functions
+CFLAGS += -W -Wreturn-type -Wunused -finline-functions -I${X11BASE}/include
#CFLAGS = -g
-LDFLAGS = -g
+LDFLAGS = -L ${X11BASE}/lib
all: ${GAME} ${EDITOR}
install: all
- -mkdir ${LIB}
+ -mkdir -m 0664 ${LIB}
-mkdir ${LIB}
cp ${GAME} ${EDITOR} ${BIN}
+ chown root.games ${BIN}/${GAME}
+ chmod g+s ${BIN}/${GAME}
# The next line sets up the level files so that anyone can edit all of
# the levels. Remove this line to have better security.
- chmod 4755 ${BIN}/${EDITOR}
+ chmod 2755 ${BIN}/${EDITOR}
+ chown root:games ${BIN}/${EDITOR}
+# chmod 4755 ${BIN}/${EDITOR}
touch ${LIB}/scores
+ chown root.games ${LIB}/scores
+ chmod g+w ${LIB}/scores
# Allow anyone to modify the high score file. An alternative is to
# change the mode bits of ${GAME} to be 4755.
chmod 666 ${LIB}/scores
- chmod 666 ${LIB}/scores
+# chmod 666 ${LIB}/scores
cp goldlev* default ${LIB}
+ chown -R root:games ${LIB}
cp golddig.p ${MAN}/golddig.${MANEXT}
update: all
cp ${GAME} ${EDITOR} ${BIN}
# The next line sets up the level files so that anyone can edit all of
# the levels. Remove this line to have better security.
- chmod 4755 ${BIN}/${EDITOR}
+ chmod 2755 ${BIN}/${EDITOR}
clean:
rm -f *.o *~ bitmap/*~ core ${GAME} ${EDITOR}