tree-wide: always use TAKE_FD() when calling rearrange_stdio()
rearrange_stdio() invalidates specified fds even on failure, which means we should always invalidate the fds we pass in no matter what. Let's make this explicit by using TAKE_FD() for that everywhere. Note that in many places we such invalidation doesnt get us much behaviour-wise, since we don't use the variables anymore later. But TAKE_FD() in a way is also documentation, it encodes explicitly that the fds are invalidated here, so I think it's a good thing to always make this explicit here.
This commit is contained in:
committed by
Luca Boccassi
parent
829b86bc0f
commit
aedec452b9
@@ -65,7 +65,7 @@ int import_fork_tar_x(const char *path, pid_t *ret) {
|
||||
|
||||
pipefd[1] = safe_close(pipefd[1]);
|
||||
|
||||
r = rearrange_stdio(pipefd[0], -1, STDERR_FILENO);
|
||||
r = rearrange_stdio(TAKE_FD(pipefd[0]), -1, STDERR_FILENO);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to rearrange stdin/stdout: %m");
|
||||
_exit(EXIT_FAILURE);
|
||||
@@ -131,7 +131,7 @@ int import_fork_tar_c(const char *path, pid_t *ret) {
|
||||
|
||||
pipefd[0] = safe_close(pipefd[0]);
|
||||
|
||||
r = rearrange_stdio(-1, pipefd[1], STDERR_FILENO);
|
||||
r = rearrange_stdio(-1, TAKE_FD(pipefd[1]), STDERR_FILENO);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to rearrange stdin/stdout: %m");
|
||||
_exit(EXIT_FAILURE);
|
||||
|
||||
@@ -389,9 +389,10 @@ static int transfer_start(Transfer *t) {
|
||||
|
||||
pipefd[0] = safe_close(pipefd[0]);
|
||||
|
||||
r = rearrange_stdio(t->stdin_fd,
|
||||
t->stdout_fd < 0 ? pipefd[1] : t->stdout_fd,
|
||||
r = rearrange_stdio(TAKE_FD(t->stdin_fd),
|
||||
t->stdout_fd < 0 ? pipefd[1] : TAKE_FD(t->stdout_fd),
|
||||
pipefd[1]);
|
||||
TAKE_FD(pipefd[1]);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to set stdin/stdout/stderr: %m");
|
||||
_exit(EXIT_FAILURE);
|
||||
|
||||
@@ -442,7 +442,7 @@ static int verify_gpg(
|
||||
|
||||
gpg_pipe[1] = safe_close(gpg_pipe[1]);
|
||||
|
||||
r = rearrange_stdio(gpg_pipe[0], -1, STDERR_FILENO);
|
||||
r = rearrange_stdio(TAKE_FD(gpg_pipe[0]), -1, STDERR_FILENO);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to rearrange stdin/stdout: %m");
|
||||
_exit(EXIT_FAILURE);
|
||||
|
||||
Reference in New Issue
Block a user