From: Steinar H. Gunderson Date: Sat, 29 Sep 2007 13:38:17 +0000 (+0000) Subject: Handle the root of the DNS tree correctly in ares_expand_name. X-Git-Tag: curl-7_17_1~166 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ecea9453ba158edb1949dcac2fc46e1ad4b5bf2;p=curl Handle the root of the DNS tree correctly in ares_expand_name. --- diff --git a/ares/ares_expand_name.c b/ares/ares_expand_name.c index 7fe025fe4..ffa26e6b5 100644 --- a/ares/ares_expand_name.c +++ b/ares/ares_expand_name.c @@ -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)