From 68c149e9ddef2f2c36bab6b6c6be487f60b3cc89 Mon Sep 17 00:00:00 2001 From: Dominik Date: Thu, 19 Mar 2026 21:08:47 +0100 Subject: [PATCH] fix: move fd-match guard out of loop in reply_query() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `if (serv == last) return;` was inside the loop `for (serv = first; serv != last; ...)`, making it dead code — the loop condition ensures the body never runs when serv == last. Replies arriving on an unrecognised file descriptor were therefore never rejected by the fd check. Moving the guard after the loop causes it to fire when no server socket matches. Signed-off-by: Dominik --- src/forward.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/forward.c b/src/forward.c index ab1ca76..e1d1880 100644 --- a/src/forward.c +++ b/src/forward.c @@ -1205,10 +1205,10 @@ void reply_query(int fd, time_t now) server = daemon->serverarray[serv]; if (server->sfd && server->sfd->fd == fd) break; - - if (serv == last) - return; } + + if (serv == last) + return; } /* spoof check: answer must come from known server, also