summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'src/network')
-rw-r--r--src/network/lookup_name.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/network/lookup_name.c b/src/network/lookup_name.c
index 209c20f0..a1851f1f 100644
--- a/src/network/lookup_name.c
+++ b/src/network/lookup_name.c
@@ -184,6 +184,10 @@ static int name_from_dns_search(struct address buf[static MAXADDRS], char canon[
for (dots=l=0; name[l]; l++) if (name[l]=='.') dots++;
if (dots >= conf.ndots || name[l-1]=='.') *search = 0;
+ /* Strip final dot for canon, fail if multiple trailing dots. */
+ if (name[l-1]=='.') l--;
+ if (!l || name[l-1]=='.') return EAI_NONAME;
+
/* This can never happen; the caller already checked length. */
if (l >= 256) return EAI_NONAME;