From 10c4031d64c2039404ee632ba2755e2bc1aff7d1 Mon Sep 17 00:00:00 2001 From: Masafumi Max NAKANE Date: Sat, 1 Feb 1997 21:30:50 +0000 Subject: [PATCH] Instead of swapping ruid and euid before and after touching user's file, simply drop the privilege right after the program is started. Thanks to bde for giving me good suggestion about this problem. --- games/backgammon/backgammon/main.c | 5 +++++ games/backgammon/common_source/save.c | 4 ---- games/backgammon/teachgammon/teach.c | 7 +++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/games/backgammon/backgammon/main.c b/games/backgammon/backgammon/main.c index 6d18876ea3c..97f0c6a937f 100644 --- a/games/backgammon/backgammon/main.c +++ b/games/backgammon/backgammon/main.c @@ -104,6 +104,11 @@ char **argv; register int l; /* non-descript index */ register char c; /* non-descript character storage */ long t; /* time for random num generator */ + uid_t uid; + + /*Drop the privilege.*/ + uid = getuid(); + setreuid (uid,uid); /* initialization */ bflag = 2; /* default no board */ diff --git a/games/backgammon/common_source/save.c b/games/backgammon/common_source/save.c index 80030e792a2..b25e19494dc 100644 --- a/games/backgammon/common_source/save.c +++ b/games/backgammon/common_source/save.c @@ -87,7 +87,6 @@ register int n; writec (*fs++); } *fs = '\0'; - setreuid(geteuid(), getuid()); if ((fdesc = open(fname,2)) == -1 && errno == 2) { if ((fdesc = creat (fname,0700)) != -1) break; @@ -130,7 +129,6 @@ register int n; write (fdesc,&gvalue,sizeof gvalue); write (fdesc,&raflag,sizeof raflag); close (fdesc); - setreuid(geteuid(), getuid()); if (tflag) curmove (18,0); writel (saved); @@ -150,7 +148,6 @@ char *s; register int i; int fdesc; - setreuid(geteuid(), getuid()); if ((fdesc = open (s,0)) == -1) norec (s); read (fdesc,board,sizeof board); @@ -165,7 +162,6 @@ char *s; read (fdesc,&gvalue,sizeof gvalue); read (fdesc,&raflag,sizeof raflag); close (fdesc); - setreuid(geteuid(), getuid()); rflag = 1; } diff --git a/games/backgammon/teachgammon/teach.c b/games/backgammon/teachgammon/teach.c index 7761ee6ed5c..bae186c304b 100644 --- a/games/backgammon/teachgammon/teach.c +++ b/games/backgammon/teachgammon/teach.c @@ -42,6 +42,8 @@ static char sccsid[] = "@(#)teach.c 8.1 (Berkeley) 5/31/93"; #endif /* not lint */ #include +#include +#include #include "back.h" char *hello[]; @@ -78,6 +80,11 @@ char **argv; { register int i; + uid_t uid; + + /*Drop the privilege.*/ + uid = getuid(); + setreuid (uid,uid); acnt = 1; signal (2,getout);