execute: Properly log errors considering socket fds (#5910)

Till now if the params->n_fds was 0, systemd was logging that there were
more than one sockets.

Thanks @gregoryp and @VFXcode who did the most work debugging this.
This commit is contained in:
Aggelos Avgerinos 2017-05-09 02:09:22 +03:00 committed by Zbigniew Jędrzejewski-Szmek
parent 6d892bd19e
commit 488ab41cb8
1 changed files with 6 additions and 1 deletions

View File

@ -2927,11 +2927,16 @@ int exec_spawn(Unit *unit,
context->std_output == EXEC_OUTPUT_SOCKET ||
context->std_error == EXEC_OUTPUT_SOCKET) {
if (params->n_fds != 1) {
if (params->n_fds > 1) {
log_unit_error(unit, "Got more than one socket.");
return -EINVAL;
}
if (params->n_fds == 0) {
log_unit_error(unit, "Got no socket.");
return -EINVAL;
}
socket_fd = params->fds[0];
} else {
socket_fd = -1;