mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
misc-progs: setuid: Return exit code from called process
This patch will return the exit code from the called process which has not been done before. This made it more difficult to catch any unsuccessful calls from the web UI. Partly Fixes: #12863 Tested-by: Jon Murphy <jon.murphy@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
@@ -104,16 +104,20 @@ static int system_core(char* command, char** args, uid_t uid, gid_t gid, char *e
|
||||
}
|
||||
|
||||
default: /* parent */
|
||||
do {
|
||||
if (waitpid(pid, &status, 0) == -1) {
|
||||
if (errno != EINTR)
|
||||
return -1;
|
||||
} else {
|
||||
return status;
|
||||
}
|
||||
} while (1);
|
||||
}
|
||||
// Wait until the child process has finished
|
||||
waitpid(pid, &status, 0);
|
||||
|
||||
// The child was terminated by a signal
|
||||
if (WIFSIGNALED(status))
|
||||
return 128 + WTERMSIG(status);
|
||||
|
||||
// Return the exit code if available
|
||||
if (WIFEXITED(status))
|
||||
return WEXITSTATUS(status);
|
||||
|
||||
// Something unexpected happened, exiting with error
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
int run(char* command, char** argv) {
|
||||
|
||||
Reference in New Issue
Block a user