]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
doh: remove wrong but unreachable exit path from doh_decode_rdata_name
authorDaniel Stenberg <daniel@haxx.se>
Thu, 13 Mar 2025 22:28:42 +0000 (23:28 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 14 Mar 2025 08:09:25 +0000 (09:09 +0100)
The condition could not happen, as the function is only called from a
single place where the caller already made sure it can't happen. This
change still removes the flawed logic.

Reported-by: Ronald Crane
Closes #16710

lib/doh.c

index 6b37727c38ab6f266eb653a98786034648856843..dbeb6d71a3a55dc4304d1d82930ebde913a1ab24 100644 (file)
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -1018,19 +1018,15 @@ static CURLcode doh_decode_rdata_name(unsigned char **buf, size_t *remaining,
                                       char **dnsname)
 {
   unsigned char *cp = NULL;
-  int rem = 0;
+  size_t rem = 0;
   unsigned char clen = 0; /* chunk len */
   struct dynbuf thename;
 
   DEBUGASSERT(buf && remaining && dnsname);
-  if(!buf || !remaining || !dnsname)
+  if(!buf || !remaining || !dnsname || !*remaining)
     return CURLE_OUT_OF_MEMORY;
-  rem = (int)*remaining;
-  if(rem <= 0) {
-    Curl_dyn_free(&thename);
-    return CURLE_OUT_OF_MEMORY;
-  }
   Curl_dyn_init(&thename, CURL_MAXLEN_host_name);
+  rem = *remaining;
   cp = *buf;
   clen = *cp++;
   if(clen == 0) {