{
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) {
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;
continue;
if (nowyear==year && nowdate==day && nowtime < tt)
continue;
- run(file);
+ run(dirent.d_name);
}
fclose(dirf);
updatetime(nowtime);
register pid, i;
char sbuf[64];
+ /* printf("running %s\n", file); */
if (fork()!=0)
return;
for (i=0; i<15; i++)
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);
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);