X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/ba8fbf45b5e951ea4ca8e9c04b0d7a6be697054d..15df17258f171ab45e3a452ede2cdd9561cea8bd:/usr/src/cmd/atrun.c diff --git a/usr/src/cmd/atrun.c b/usr/src/cmd/atrun.c index e997fad983..401862a8cf 100644 --- a/usr/src/cmd/atrun.c +++ b/usr/src/cmd/atrun.c @@ -20,9 +20,10 @@ char **argv; { int tt, day, year, uniq; struct direct dirent; - char file[DIRSIZ+1]; FILE *dirf; + setuid(0); + setgid(0); chdir(DIR); makenowtime(); if ((dirf = fopen(".", "r")) == NULL) { @@ -32,9 +33,7 @@ char **argv; while (fread((char *)&dirent, sizeof(dirent), 1, dirf) == 1) { if (dirent.d_ino==0) continue; - strncpy(file, dirent.d_name, DIRSIZ); - file[DIRSIZ] = '\0'; - if (sscanf(file, "%2d.%3d.%4d.%2d", &year, &day, &tt, &uniq) != 4) + if (sscanf(dirent.d_name, "%2d.%3d.%4d.%2d", &year, &day, &tt, &uniq) != 4) continue; if (nowyear < year) continue; @@ -42,7 +41,7 @@ char **argv; continue; if (nowyear==year && nowdate==day && nowtime < tt) continue; - run(file); + run(dirent.d_name); } fclose(dirf); updatetime(nowtime); @@ -81,6 +80,7 @@ char *file; register pid, i; char sbuf[64]; + /* printf("running %s\n", file); */ if (fork()!=0) return; for (i=0; i<15; i++) @@ -91,8 +91,6 @@ char *file; chdir(PDIR); if (stat(file, &stbuf) == -1) exit(1); - setgid(stbuf.st_gid); - setuid(stbuf.st_uid); if (pid = fork()) { if (pid == -1) exit(1); @@ -100,6 +98,8 @@ char *file; unlink(file); exit(0); } + setgid(stbuf.st_gid); + setuid(stbuf.st_uid); nice(3); execl("/bin/sh", "sh", file, 0); execl("/usr/bin/sh", "sh", file, 0);