From af02a8d07193e8b8900a37a8f42aefcdc332e68c Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 7 Sep 2017 12:17:18 +0100 Subject: [PATCH] [dns] Ensure DNS names are NUL-terminated when used as diagnostic strings Signed-off-by: Michael Brown --- src/net/udp/dns.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/net/udp/dns.c b/src/net/udp/dns.c index 897e0f85..f412f710 100644 --- a/src/net/udp/dns.c +++ b/src/net/udp/dns.c @@ -417,7 +417,7 @@ static const char * dns_name ( struct dns_name *name ) { static char buf[256]; int len; - len = dns_decode ( name, buf, sizeof ( buf ) ); + len = dns_decode ( name, buf, ( sizeof ( buf ) - 1 /* NUL */ ) ); return ( ( len < 0 ) ? "" : buf ); } @@ -877,10 +877,16 @@ static void dns_xfer_close ( struct dns_request *dns, int rc ) { */ static int dns_progress ( struct dns_request *dns, struct job_progress *progress ) { + int len; /* Show current question as progress message */ - dns_decode ( &dns->name, progress->message, - sizeof ( progress->message ) ); + len = dns_decode ( &dns->name, progress->message, + ( sizeof ( progress->message ) - 1 /* NUL */ ) ); + if ( len < 0 ) { + /* Ignore undecodable names */ + progress->message[0] = '\0'; + } + return 0; }