*.localdomain != localhost
".localdomain" is not a reserved suffix (or prefix). I'm not aware of any product expecting *.localdomain to resolve to localhost, however I am aware of at least one product that defaults to ".localdomain" as its DNS suffix provided via DHCP (pfSense). This leads to unexpected results when attempting to access a host that's offline (or a host that's online, when nsswitch.conf is [mis-]configured to have myhostname ahead of DNS). Operate on: localhost (and localhost.) *.localhost (and *.localhost.) localhost.localdomain (and localhost.localdomain.) *.localhost.localdomain (and *.localhost.localdomain.) We should not cover: *.localdomain (nor *.localdomain.) localdomain (nor localdomain.)
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
48ddca5f35
commit
63003524cb
@@ -150,16 +150,16 @@ bool is_localhost(const char *hostname) {
|
||||
assert(hostname);
|
||||
|
||||
/* This tries to identify local host and domain names
|
||||
* described in RFC6761 plus the redhatism of .localdomain */
|
||||
* described in RFC6761 plus the redhatism of localdomain */
|
||||
|
||||
return strcaseeq(hostname, "localhost") ||
|
||||
strcaseeq(hostname, "localhost.") ||
|
||||
strcaseeq(hostname, "localdomain.") ||
|
||||
strcaseeq(hostname, "localdomain") ||
|
||||
strcaseeq(hostname, "localhost.localdomain") ||
|
||||
strcaseeq(hostname, "localhost.localdomain.") ||
|
||||
endswith_no_case(hostname, ".localhost") ||
|
||||
endswith_no_case(hostname, ".localhost.") ||
|
||||
endswith_no_case(hostname, ".localdomain") ||
|
||||
endswith_no_case(hostname, ".localdomain.");
|
||||
endswith_no_case(hostname, ".localhost.localdomain") ||
|
||||
endswith_no_case(hostname, ".localhost.localdomain.");
|
||||
}
|
||||
|
||||
bool is_gateway_hostname(const char *hostname) {
|
||||
|
||||
Reference in New Issue
Block a user