]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
doh: reduce the DNS request buffer size
authorDaniel Stenberg <daniel@haxx.se>
Thu, 17 Apr 2025 15:54:59 +0000 (17:54 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 18 Apr 2025 21:10:29 +0000 (23:10 +0200)
No point in having it larger than the largest allowed request size.

Also removed a no longer used struct.

Closes #17087

lib/doh.c
lib/doh.h

index b2406e5865f847b73a6eda413935b43656fb9d5b..25d4fc43d25d2b54f8c1edf3222528a2599c1d62 100644 (file)
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -115,7 +115,7 @@ UNITTEST DOHcode doh_req_encode(const char *host,
   if(host[hostlen-1]!='.')
     expected_len++;
 
-  if(expected_len > (256 + 16)) /* RFCs 1034, 1035 */
+  if(expected_len > DOH_MAX_DNSREQ_SIZE)
     return DOH_DNS_NAME_TOO_LONG;
 
   if(len < expected_len)
index 55828767a3805e394f4c5ea930e5e35065493bf7..9146f53580f79e844cbaf21824101e6a94907387 100644 (file)
--- a/lib/doh.h
+++ b/lib/doh.h
@@ -59,15 +59,6 @@ typedef enum {
   DNS_TYPE_HTTPS = 65
 } DNStype;
 
-/* one of these for each DoH request */
-struct doh_probe {
-  unsigned int easy_mid; /* multi id of easy handle doing the lookup */
-  DNStype dnstype;
-  unsigned char req_body[512];
-  size_t req_body_len;
-  struct dynbuf resp_body;
-};
-
 enum doh_slot_num {
   /* Explicit values for first two symbols so as to match hard-coded
    * constants in existing code
@@ -91,13 +82,16 @@ enum doh_slot_num {
 
 #define CURL_EZM_DOH_PROBE   "ezm:doh-p"
 
+/* the largest one we can make, based on RFCs 1034, 1035 */
+#define DOH_MAX_DNSREQ_SIZE (256 + 16)
+
 /* each DoH probe request has this
  * as easy meta for CURL_EZM_DOH_PROBE */
 struct doh_request {
+  unsigned char req_body[DOH_MAX_DNSREQ_SIZE];
   struct curl_slist *req_hds;
   struct dynbuf resp_body;
   size_t req_body_len;
-  unsigned char req_body[512];
   DNStype dnstype;
 };