From: Frantisek Tobias Date: Mon, 25 Aug 2025 14:30:52 +0000 (+0200) Subject: daemon/io: catch fdopen fail, close fd and default back to stdout X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fenvironments%2Fdocs-lint-tidy-fi-8vb3i4%2Fdeployments%2F7485;p=thirdparty%2Fknot-resolver.git daemon/io: catch fdopen fail, close fd and default back to stdout --- diff --git a/daemon/io.c b/daemon/io.c index 79a586b24..3f609c6e5 100644 --- a/daemon/io.c +++ b/daemon/io.c @@ -565,11 +565,12 @@ void io_tty_process_input(uv_stream_t *stream, ssize_t nread, const uv_buf_t *bu if (dup_fd >= 0) { out = fdopen(dup_fd, "w"); } - } - /* Avoid Null pointer */ - if (!out) { - return; + if (!out) { + close(dup_fd); + /* fallback to standard output */ + out = stdout; + } } /** The current single command and the remaining command(s). */ diff --git a/daemon/network.c b/daemon/network.c index d4088bbaa..0a6ebf317 100644 --- a/daemon/network.c +++ b/daemon/network.c @@ -919,8 +919,9 @@ static int clear_bpf_cb(trie_val_t *val, void *ctx) uv_fileno(endpoint->handle, &sockfd); kr_require(sockfd != -1); + /* appease linter, kernel ignores optval for SO_DETACH_BPF */ int no = 0; - if (setsockopt(sockfd, SOL_SOCKET, SO_DETACH_BPF, &no, sizeof(no)) != 0) { + if (setsockopt(sockfd, SOL_SOCKET, SO_DETACH_BPF, &no, 0) != 0) { kr_log_error(NETWORK, "failed to clear SO_DETACH_BPF socket option\n"); } /* Proceed even if setsockopt() failed,