Переглянути джерело

[dns] Ensure DNS names are NUL-terminated when used as diagnostic strings

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 6 роки тому
джерело
коміт
af02a8d071
1 змінених файлів з 9 додано та 3 видалено
  1. 9
    3
      src/net/udp/dns.c

+ 9
- 3
src/net/udp/dns.c Переглянути файл

417
 	static char buf[256];
417
 	static char buf[256];
418
 	int len;
418
 	int len;
419
 
419
 
420
-	len = dns_decode ( name, buf, sizeof ( buf ) );
420
+	len = dns_decode ( name, buf, ( sizeof ( buf ) - 1 /* NUL */ ) );
421
 	return ( ( len < 0 ) ? "<INVALID>" : buf );
421
 	return ( ( len < 0 ) ? "<INVALID>" : buf );
422
 }
422
 }
423
 
423
 
877
  */
877
  */
878
 static int dns_progress ( struct dns_request *dns,
878
 static int dns_progress ( struct dns_request *dns,
879
 			  struct job_progress *progress ) {
879
 			  struct job_progress *progress ) {
880
+	int len;
880
 
881
 
881
 	/* Show current question as progress message */
882
 	/* Show current question as progress message */
882
-	dns_decode ( &dns->name, progress->message,
883
-		     sizeof ( progress->message ) );
883
+	len = dns_decode ( &dns->name, progress->message,
884
+			   ( sizeof ( progress->message ) - 1 /* NUL */ ) );
885
+	if ( len < 0 ) {
886
+		/* Ignore undecodable names */
887
+		progress->message[0] = '\0';
888
+	}
889
+
884
 	return 0;
890
 	return 0;
885
 }
891
 }
886
 
892
 

Завантаження…
Відмінити
Зберегти