diff options
| -rw-r--r-- | ares/ares_expand_name.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| 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) | 
