BUILD: resolvers: avoid a possible warning on null-deref

Depending on the code that precedes the loop, gcc may emit this warning:

  src/resolvers.c: In function 'resolv_process_responses':
  src/resolvers.c:1009:11: warning: potential null pointer dereference [-Wnull-dereference]
   1009 |  if (query->type != DNS_RTYPE_SRV && flags & DNS_FLAG_TRUNCATED) {
        |      ~~~~~^~~~~~

However after carefully checking, r_res->header.qdcount it exclusively 1
when reaching this place, which forces the for() loop to enter for at
least one iteration, and <query> to be set. Thus there's no code path
leading to a null deref. It's possibly just because the assignment is
too far and the compiler cannot figure that the condition is always OK.
Let's just mark it to please the compiler.

(cherry picked from commit 10c1a8c3bd6a24f51616172a37f1e3ef58f8fa84)
Signed-off-by: Willy Tarreau <w@1wt.eu>
diff --git a/src/resolvers.c b/src/resolvers.c
index e20de7b..6bdb0f5 100644
--- a/src/resolvers.c
+++ b/src/resolvers.c
@@ -974,8 +974,17 @@
 		reader += 2;
 	}
 
+	/* Let's just make gcc happy. The tests above make it clear that
+	 * qdcount==1 hence that we necessarily enter into the loop at least
+	 * once, but gcc seems to be having difficulties following it and
+	 * warns about the risk of NULL dereference at the next line, even
+	 * if a BUG_ON(!query) is used.
+	 */
+	ALREADY_CHECKED(query);
+
 	/* TRUNCATED flag must be checked after we could read the query type
-	 * because a TRUNCATED SRV query type response can still be exploited */
+	 * because a TRUNCATED SRV query type response can still be exploited
+	 */
 	if (query->type != DNS_RTYPE_SRV && flags & DNS_FLAG_TRUNCATED) {
 		cause = RSLV_RESP_TRUNCATED;
 		goto return_error;