version 1.1.2.4, 2010/10/18 10:47:06
|
version 1.1.2.5, 2010/10/18 11:13:50
|
Line 50 main(int argc, char **argv)
|
Line 50 main(int argc, char **argv)
|
struct sigaction sa; |
struct sigaction sa; |
struct passwd *pass = NULL; |
struct passwd *pass = NULL; |
uid_t uid = getuid(); |
uid_t uid = getuid(); |
|
u_int penalty = 1; |
|
|
while ((ch = getopt(argc, argv, "vhc:u:")) != -1) |
while ((ch = getopt(argc, argv, "vhc:u:")) != -1) |
switch (ch) { |
switch (ch) { |
Line 125 main(int argc, char **argv)
|
Line 126 main(int argc, char **argv)
|
VERB(1) printf("Info:: setuid to %u\n", uid); |
VERB(1) printf("Info:: setuid to %u\n", uid); |
|
|
status ^= status; |
status ^= status; |
while (!Kill) | while (!Kill && penalty) { |
switch ((ret = fork())) { |
switch ((ret = fork())) { |
case -1: |
case -1: |
printf("Error:: error in fork #%d - %s\n", errno, strerror(errno)); |
printf("Error:: error in fork #%d - %s\n", errno, strerror(errno)); |
Line 139 main(int argc, char **argv)
|
Line 140 main(int argc, char **argv)
|
ret = 6; |
ret = 6; |
goto end; |
goto end; |
} |
} |
/* never reached */ | /* never reached !!! */ |
break; |
break; |
default: |
default: |
wait(&status); |
wait(&status); |
kill(ret, SIGTERM); |
kill(ret, SIGTERM); |
ret = status; |
ret = status; |
} |
} |
|
/* penalty timeout retry */ |
|
usleep(penalty); |
|
penalty <<= 1; |
|
VERB(2) printf("Info:: penalty timeout %u microseconds\n", penalty); |
|
} |
|
if (!penalty) |
|
ret = 9; |
end: |
end: |
return ret; |
return ret; |
} |
} |