summaryrefslogtreecommitdiffstats
path: root/usr.sbin/cron/crontab.c
diff options
context:
space:
mode:
authormillert <millert@openbsd.org>2015-10-31 12:13:01 +0000
committermillert <millert@openbsd.org>2015-10-31 12:13:01 +0000
commitc65ac5402b367c020d609674aef3dbd70692b6ae (patch)
tree7ee291a140781637c17ef1988730b376a173b208 /usr.sbin/cron/crontab.c
parentmark *Completions* buffer as read-only (diff)
downloadwireguard-openbsd-c65ac5402b367c020d609674aef3dbd70692b6ae.tar.xz
wireguard-openbsd-c65ac5402b367c020d609674aef3dbd70692b6ae.zip
swap_gids and swap_gids_back are only used by crontab.c so
move them there.
Diffstat (limited to 'usr.sbin/cron/crontab.c')
-rw-r--r--usr.sbin/cron/crontab.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/usr.sbin/cron/crontab.c b/usr.sbin/cron/crontab.c
index 51e3bd8ee40..319f555153b 100644
--- a/usr.sbin/cron/crontab.c
+++ b/usr.sbin/cron/crontab.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: crontab.c,v 1.77 2015/10/29 23:14:30 millert Exp $ */
+/* $OpenBSD: crontab.c,v 1.78 2015/10/31 12:13:01 millert Exp $ */
/* Copyright 1988,1990,1993,1994 by Paul Vixie
* Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
@@ -30,6 +30,7 @@ enum opt_t { opt_unknown, opt_list, opt_delete, opt_edit, opt_replace };
static char *getoptargs = "u:ler";
static pid_t Pid;
+static gid_t save_egid;
static char User[MAX_UNAME], RealUser[MAX_UNAME];
static char Filename[MAX_FNAME], TempFilename[MAX_FNAME];
static FILE *NewCrontab;
@@ -46,6 +47,17 @@ static void list_cmd(void),
die(int);
static int replace_cmd(void);
+static int swap_gids(void)
+{
+ save_egid = getegid();
+ return (setegid(getgid()));
+}
+
+static int swap_gids_back(void)
+{
+ return (setegid(save_egid));
+}
+
static void
usage(const char *msg)
{