]> granicus.if.org Git - curl/commitdiff
doh: avoid truncating DNS QTYPE to lower octet
authorNiall O'Reilly <Niall.oReilly@ucd.ie>
Thu, 19 Sep 2019 13:38:14 +0000 (14:38 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 19 Sep 2019 20:50:38 +0000 (22:50 +0200)
Closes #4381

lib/doh.c

index e97e4fe7a2bd7cefa73cf8790d0f014308e9759c..5a76d6d873dd3a7698be2f0446a25f8ad7f31620 100644 (file)
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -135,8 +135,10 @@ UNITTEST DOHcode doh_encode(const char *host,
     }
   } while(1);
 
-  *dnsp++ = '\0'; /* upper 8 bit TYPE */
-  *dnsp++ = (unsigned char)dnstype;
+  /* There are assigned TYPE codes beyond 255: use range [1..65535]  */
+  *dnsp++ = (unsigned char)(255 & (dnstype>>8)); /* upper 8 bit TYPE */
+  *dnsp++ = (unsigned char)(255 & dnstype);      /* lower 8 bit TYPE */
+
   *dnsp++ = '\0'; /* upper 8 bit CLASS */
   *dnsp++ = DNS_CLASS_IN; /* IN - "the Internet" */