]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: dns: don't store dns_build_query() result in the trash's length
authorWilly Tarreau <w@1wt.eu>
Wed, 22 Aug 2018 02:52:02 +0000 (04:52 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 22 Aug 2018 03:16:32 +0000 (05:16 +0200)
By convenience or laziness we used to store dns_build_query()'s return code
into trash.data. The result checks applied there compare trash.data to -1
while it's now unsigned since commit 843b7cb ("MEDIUM: chunks: make the
chunk struct's fields match the buffer struct"). Let's clean this up
and test the result itself without storing it first.

No backport is needed.

src/dns.c

index 985ed0f3379bae28c5e6ffa7a835de042caac665..033fcc145616fcbf65a99d668b42f1f455b61ea3 100644 (file)
--- a/src/dns.c
+++ b/src/dns.c
@@ -1674,20 +1674,20 @@ static void dns_resolve_send(struct dgram_conn *dgram)
        HA_SPIN_LOCK(DNS_LOCK, &resolvers->lock);
 
        list_for_each_entry(res, &resolvers->resolutions.curr, list) {
-               int ret;
+               int ret, len;
 
                if (res->nb_queries == resolvers->nb_nameservers)
                        continue;
 
-               trash.data = dns_build_query(res->query_id, res->query_type,
-                                           resolvers->accepted_payload_size,
-                                           res->hostname_dn, res->hostname_dn_len,
-                                           trash.area, trash.size);
-               if (trash.data == -1)
+               len = dns_build_query(res->query_id, res->query_type,
+                                     resolvers->accepted_payload_size,
+                                     res->hostname_dn, res->hostname_dn_len,
+                                     trash.area, trash.size);
+               if (len == -1)
                        goto snd_error;
 
-               ret = send(fd, trash.area, trash.data, 0);
-               if (ret != trash.data)
+               ret = send(fd, trash.area, len, 0);
+               if (ret != len)
                        goto snd_error;
 
                ns->counters.sent++;