projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BSD 3 development
[unix-history]
/
usr
/
src
/
cmd
/
atrun.c
diff --git
a/usr/src/cmd/atrun.c
b/usr/src/cmd/atrun.c
index
8b01bef
..
401862a
100644
(file)
--- a/
usr/src/cmd/atrun.c
+++ b/
usr/src/cmd/atrun.c
@@
-22,6
+22,8
@@
char **argv;
struct direct dirent;
FILE *dirf;
struct direct dirent;
FILE *dirf;
+ setuid(0);
+ setgid(0);
chdir(DIR);
makenowtime();
if ((dirf = fopen(".", "r")) == NULL) {
chdir(DIR);
makenowtime();
if ((dirf = fopen(".", "r")) == NULL) {
@@
-78,6
+80,7
@@
char *file;
register pid, i;
char sbuf[64];
register pid, i;
char sbuf[64];
+ /* printf("running %s\n", file); */
if (fork()!=0)
return;
for (i=0; i<15; i++)
if (fork()!=0)
return;
for (i=0; i<15; i++)
@@
-88,8
+91,6
@@
char *file;
chdir(PDIR);
if (stat(file, &stbuf) == -1)
exit(1);
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);
if (pid = fork()) {
if (pid == -1)
exit(1);
@@
-97,6
+98,8
@@
char *file;
unlink(file);
exit(0);
}
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);
nice(3);
execl("/bin/sh", "sh", file, 0);
execl("/usr/bin/sh", "sh", file, 0);