summaryrefslogtreecommitdiff
blob: 5109554e1dd16a1415b5478f710f0613d11ffec9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- vixie-cron-4.1/crontab.c
+++ vixie-cron-4.1/crontab.c
@@ -314,8 +314,6 @@
 		perror("fstat");
 		goto fatal;
 	}
-	utimebuf.actime = statbuf.st_atime;
-	utimebuf.modtime = statbuf.st_mtime;
 
 	/* Turn off signals. */
 	(void)signal(SIGHUP, SIG_IGN);
@@ -374,6 +372,17 @@
 		perror(Filename);
 		exit(ERROR_EXIT);
 	}
+	if (swap_uids() < OK) {
+		perror("swapping uids");
+		exit(ERROR_EXIT);
+	}
+	utimebuf.actime = statbuf.st_atime;
+	utimebuf.modtime = statbuf.st_mtime;
+	utime(Filename, &utimebuf);
+	if (swap_uids_back() < OK) {
+		perror("swapping uids back");
+		exit(ERROR_EXIT);
+	}
 	utime(Filename, &utimebuf);
  again:
 	rewind(NewCrontab);