| 143 |
fprintf(stderr, "bailing out.\n"); |
fprintf(stderr, "bailing out.\n"); |
| 144 |
exit(ERROR_EXIT); |
exit(ERROR_EXIT); |
| 145 |
} |
} |
| 146 |
strcpy(User, pw->pw_name); |
(void) strncpy(User, pw->pw_name, (sizeof User)-1); |
| 147 |
|
User[(sizeof User)-1] = '\0'; |
| 148 |
strcpy(RealUser, User); |
strcpy(RealUser, User); |
| 149 |
Filename[0] = '\0'; |
Filename[0] = '\0'; |
| 150 |
Option = opt_unknown; |
Option = opt_unknown; |
| 167 |
ProgramName, optarg); |
ProgramName, optarg); |
| 168 |
exit(ERROR_EXIT); |
exit(ERROR_EXIT); |
| 169 |
} |
} |
| 170 |
(void) strcpy(User, optarg); |
(void) strncpy(User, pw->pw_name, (sizeof User)-1); |
| 171 |
|
User[(sizeof User)-1] = '\0'; |
| 172 |
break; |
break; |
| 173 |
case 'l': |
case 'l': |
| 174 |
if (Option != opt_unknown) |
if (Option != opt_unknown) |
| 199 |
} else { |
} else { |
| 200 |
if (argv[optind] != NULL) { |
if (argv[optind] != NULL) { |
| 201 |
Option = opt_replace; |
Option = opt_replace; |
| 202 |
(void) strcpy (Filename, argv[optind]); |
(void) strncpy (Filename, argv[optind], (sizeof Filename)-1); |
| 203 |
|
Filename[(sizeof Filename)-1] = '\0'; |
| 204 |
|
|
| 205 |
} else { |
} else { |
| 206 |
usage("file name must be specified for replace"); |
usage("file name must be specified for replace"); |
| 207 |
} |
} |
| 231 |
perror(Filename); |
perror(Filename); |
| 232 |
exit(ERROR_EXIT); |
exit(ERROR_EXIT); |
| 233 |
} |
} |
| 234 |
if (swap_uids() < OK) { |
if (swap_uids_back() < OK) { |
| 235 |
perror("swapping uids back"); |
perror("swapping uids back"); |
| 236 |
exit(ERROR_EXIT); |
exit(ERROR_EXIT); |
| 237 |
} |
} |
| 303 |
time_t mtime; |
time_t mtime; |
| 304 |
WAIT_T waiter; |
WAIT_T waiter; |
| 305 |
PID_T pid, xpid; |
PID_T pid, xpid; |
| 306 |
|
mode_t um; |
| 307 |
|
|
| 308 |
log_it(RealUser, Pid, "BEGIN EDIT", User); |
log_it(RealUser, Pid, "BEGIN EDIT", User); |
| 309 |
(void) sprintf(n, CRON_TAB(User)); |
(void) sprintf(n, CRON_TAB(User)); |
| 320 |
} |
} |
| 321 |
} |
} |
| 322 |
|
|
| 323 |
(void) sprintf(Filename, "/tmp/crontab.%d", Pid); |
um = umask(077); |
| 324 |
if (-1 == (t = open(Filename, O_CREAT|O_EXCL|O_RDWR, 0600))) { |
(void) sprintf(Filename, "/tmp/crontab.XXXXXXXXXX"); |
| 325 |
|
if ((t = mkstemp(Filename)) == -1) { |
| 326 |
perror(Filename); |
perror(Filename); |
| 327 |
|
(void) umask(um); |
| 328 |
goto fatal; |
goto fatal; |
| 329 |
} |
} |
| 330 |
|
(void) umask(um); |
| 331 |
#ifdef HAS_FCHOWN |
#ifdef HAS_FCHOWN |
| 332 |
if (fchown(t, getuid(), getgid()) < 0) { |
if (fchown(t, getuid(), getgid()) < 0) { |
| 333 |
#else |
#else |
| 481 |
ProgramName, Filename); |
ProgramName, Filename); |
| 482 |
goto done; |
goto done; |
| 483 |
default: |
default: |
| 484 |
fprintf(stderr, "%s: panic: bad switch() in replace_cmd()\n"); |
fprintf(stderr, "%s: panic: bad switch() in replace_cmd()\n", |
| 485 |
|
ProgramName); |
| 486 |
goto fatal; |
goto fatal; |
| 487 |
} |
} |
| 488 |
remove: |
remove: |
| 505 |
time_t now = time(NULL); |
time_t now = time(NULL); |
| 506 |
char **envp = env_init(); |
char **envp = env_init(); |
| 507 |
|
|
| 508 |
|
if (envp == NULL) { |
| 509 |
|
fprintf(stderr, "%s: Cannot allocate memory.\n", ProgramName); |
| 510 |
|
return (-2); |
| 511 |
|
} |
| 512 |
|
|
| 513 |
(void) sprintf(n, "tmp.%d", Pid); |
(void) sprintf(n, "tmp.%d", Pid); |
| 514 |
(void) sprintf(tn, CRON_TAB(n)); |
(void) sprintf(tn, CRON_TAB(n)); |
| 515 |
if (!(tmp = fopen(tn, "w+"))) { |
if (!(tmp = fopen(tn, "w+"))) { |