libc - MFC resolver fix
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 17 Jul 2018 18:37:20 +0000 (11:37 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 17 Jul 2018 18:37:20 +0000 (11:37 -0700)
* Allows intermediate domain names with an underscore.

* Fixes lookups of 'www.office.com' and 'www.newegg.com', and
  probably other domains.

Reported-by: kerma
Diagnosed-by: kerma, tautology
lib/libc/resolv/res_comp.c

index e93550d..c85e867 100644 (file)
@@ -137,6 +137,7 @@ dn_skipname(const u_char *ptr, const u_char *eom) {
  */
 #define PERIOD 0x2e
 #define        hyphenchar(c) ((c) == 0x2d)
+#define        underscorechar(c) ((c) == 0x5f)
 #define bslashchar(c) ((c) == 0x5c)
 #define periodchar(c) ((c) == PERIOD)
 #define asterchar(c) ((c) == 0x2a)
@@ -145,7 +146,7 @@ dn_skipname(const u_char *ptr, const u_char *eom) {
 #define digitchar(c) ((c) >= 0x30 && (c) <= 0x39)
 
 #define borderchar(c) (alphachar(c) || digitchar(c))
-#define middlechar(c) (borderchar(c) || hyphenchar(c))
+#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c))
 #define        domainchar(c) ((c) > 0x20 && (c) < 0x7f)
 
 int