--- 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);