]> granicus.if.org Git - curl/commitdiff
Handle the root of the DNS tree correctly in ares_expand_name.
authorSteinar H. Gunderson <sesse@google.com>
Sat, 29 Sep 2007 13:38:17 +0000 (13:38 +0000)
committerSteinar H. Gunderson <sesse@google.com>
Sat, 29 Sep 2007 13:38:17 +0000 (13:38 +0000)
ares/ares_expand_name.c

index 7fe025fe46be76b849c3df3a3121a61003517fa9..ffa26e6b56e6aa473eb897753566e5b4591995ce 100644 (file)
@@ -74,6 +74,14 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
     return ARES_ENOMEM;
   q = *s;
 
+  if (len == 0) {
+    // RFC2181 says this should be ".": the root of the DNS tree.
+    // Since this function strips trailing dots though, it becomes ""
+    q[0] = '\0';
+    *enclen = 1;  // the caller should move one byte to get past this
+    return ARES_SUCCESS;
+  }
+
   /* No error-checking necessary; it was all done by name_length(). */
   p = encoded;
   while (*p)