From: Michael Tremer Date: Tue, 2 Aug 2022 16:37:41 +0000 (+0000) Subject: jail: Fix signal handling X-Git-Tag: 0.9.28~623 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=743f449e1b1e2de442952f6ed2b879dea9505f32;p=pakfire.git jail: Fix signal handling We need to stricly send uint64_t. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/jail.c b/src/libpakfire/jail.c index c72d1a6fb..2f41728fe 100644 --- a/src/libpakfire/jail.c +++ b/src/libpakfire/jail.c @@ -508,25 +508,40 @@ ERROR: } static int pakfire_jail_send_signal(struct pakfire_jail* jail, int fd) { - const int val = 1; + const uint64_t val = 1; + int r = 0; DEBUG(jail->pakfire, "Sending signal...\n"); - write(fd, &val, sizeof(val)); + // Write to the file descriptor + ssize_t bytes_written = write(fd, &val, sizeof(val)); + if (bytes_written < 0 || (size_t)bytes_written < sizeof(val)) { + ERROR(jail->pakfire, "Could not send signal: %m\n"); + r = 1; + } + + // Close the file descriptor close(fd); - return 0; + return r; } static int pakfire_jail_wait_for_signal(struct pakfire_jail* jail, int fd) { - int val = 0; + uint64_t val = 0; + int r = 0; DEBUG(jail->pakfire, "Waiting for signal...\n"); - read(fd, &val, sizeof(val)); + ssize_t bytes_read = read(fd, &val, sizeof(val)); + if (bytes_read < 0 || (size_t)bytes_read < sizeof(val)) { + ERROR(jail->pakfire, "Error waiting for signal: %m\n"); + r = 1; + } + + // Close the file descriptor close(fd); - return 0; + return r; } /*