/[pkg-cron]/trunk/crontab.c
ViewVC logotype

Diff of /trunk/crontab.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5 by steveg, Sun Apr 11 19:10:18 1999 UTC revision 6 by steveg, Sun Apr 11 19:10:29 1999 UTC
# Line 143  parse_args(argc, argv) Line 143  parse_args(argc, argv)
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;
# Line 166  parse_args(argc, argv) Line 167  parse_args(argc, argv)
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)
# Line 197  parse_args(argc, argv) Line 199  parse_args(argc, argv)
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                  }                  }
# Line 227  parse_args(argc, argv) Line 231  parse_args(argc, argv)
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                          }                          }
# Line 299  edit_cmd() { Line 303  edit_cmd() {
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));
# Line 315  edit_cmd() { Line 320  edit_cmd() {
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
# Line 473  edit_cmd() { Line 481  edit_cmd() {
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:
# Line 496  replace_cmd() { Line 505  replace_cmd() {
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+"))) {

Legend:
Removed from v.5  
changed lines
  Added in v.6

  ViewVC Help
Powered by ViewVC 1.1.5