hex

hex.git
git clone git://git.lenczewski.org/hex.git
Log | Files | Refs

commit 56a1e3e3751bbcbabac74ac4e987047945e0336a
parent 45f69478fc27a7198e94cdb384891fd0f3d265f8
Author: MikoĊ‚aj Lenczewski <mblenczewski@gmail.com>
Date:   Mon, 21 Aug 2023 01:13:06 +0000

hex-server: handle error in freopen for client input, output and error

Diffstat:
Msrc/server.c | 17++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/server.c b/src/server.c @@ -121,9 +121,20 @@ server_spawn_agent(struct server_state *state, struct agent_state *agent_state) dbglog("[server] Child process '%" PRIi32 "', exec()-ing agent: '%s'\n", pid, agent_state->agent); - freopen("/dev/null", "rb", stdin); - freopen(agent_state->logfile, "wb", stdout); - freopen(agent_state->logfile, "wb", stderr); + if (!freopen("/dev/null", "rb", stdin)) { + perror("freopen(stdin)"); + exit(EXIT_FAILURE); /* fork()-d process can die without issue */ + } + + if (!freopen(agent_state->logfile, "wb", stdout)) { + perror("freopen(stdout)"); + exit(EXIT_FAILURE); /* fork()-d process can die without issue */ + } + + if (!freopen(agent_state->logfile, "wb", stderr)) { + perror("freopen(stderr)"); + exit(EXIT_FAILURE); /* fork()-d process can die without issue */ + } if (execve(agent_state->agent, args, env)) { perror("execve");