summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-02-28 23:32:49 +0100
committerSven Eden <yamakuzure@gmx.net>2018-05-30 07:59:13 +0200
commit55d5be46056010efe73e68b1bc3dd68402fcd1f9 (patch)
treee5ea2b604e454d3a761c93dbae33a49fd1c3dda6 /src
parentfd3caa442196f284cba9614f6748dc601f7a6cf2 (diff)
tree-wide: port various places over to use new rearrange_stdio()
Diffstat (limited to 'src')
-rw-r--r--src/basic/exec-util.c7
-rw-r--r--src/libelogind/sd-bus/bus-socket.c11
2 files changed, 6 insertions, 12 deletions
diff --git a/src/basic/exec-util.c b/src/basic/exec-util.c
index 336bb7ca5..f8ac40671 100644
--- a/src/basic/exec-util.c
+++ b/src/basic/exec-util.c
@@ -62,12 +62,9 @@ static int do_spawn(const char *path, char *argv[], int stdout_fd, pid_t *pid) {
char *_argv[2];
if (stdout_fd >= 0) {
- /* If the fd happens to be in the right place, go along with that */
- if (stdout_fd != STDOUT_FILENO &&
- dup2(stdout_fd, STDOUT_FILENO) < 0)
+ r = rearrange_stdio(STDIN_FILENO, stdout_fd, STDERR_FILENO);
+ if (r < 0)
_exit(EXIT_FAILURE);
-
- (void) fd_cloexec(STDOUT_FILENO, false);
}
if (!argv) {
diff --git a/src/libelogind/sd-bus/bus-socket.c b/src/libelogind/sd-bus/bus-socket.c
index a86d092a6..0e58bc953 100644
--- a/src/libelogind/sd-bus/bus-socket.c
+++ b/src/libelogind/sd-bus/bus-socket.c
@@ -960,14 +960,11 @@ int bus_socket_exec(sd_bus *b) {
if (r == 0) {
/* Child */
- assert_se(dup3(s[1], STDIN_FILENO, 0) == STDIN_FILENO);
- assert_se(dup3(s[1], STDOUT_FILENO, 0) == STDOUT_FILENO);
+ safe_close(s[0]);
- if (!IN_SET(s[1], STDIN_FILENO, STDOUT_FILENO))
- safe_close(s[1]);
+ if (rearrange_stdio(s[1], s[1], STDERR_FILENO) < 0)
+ _exit(EXIT_FAILURE);
- (void) fd_cloexec(STDIN_FILENO, false);
- (void) fd_cloexec(STDOUT_FILENO, false);
(void) fd_nonblock(STDIN_FILENO, false);
(void) fd_nonblock(STDOUT_FILENO, false);
@@ -1223,7 +1220,7 @@ int bus_socket_read_message(sd_bus *bus) {
return -EIO;
}
- f = reallocarray(bus->fds, bus->n_fds + n, sizeof(int));
+ f = realloc(bus->fds, sizeof(int) * (bus->n_fds + n));
if (!f) {
close_many((int*) CMSG_DATA(cmsg), n);
return -ENOMEM;