From: Dimitri John Ledkov Date: Fri, 7 Aug 2020 11:47:09 +0000 (+0100) Subject: resolve: lift limits on search domains count or length X-Git-Tag: v247-rc1~418 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1c7466aa2e5663b5595f9cef5cbece9ec63bcc14;p=thirdparty%2Fsystemd.git resolve: lift limits on search domains count or length glibc 2.26 lifted restrictions on search domains count or length to unlimited. This has also been backported to 2.17 in some distributions (RHEL 7 and derivatives). Other softwares may have their own limits for search domains, but we should not restrict what is written out any more. https://sourceware.org/legacy-ml/libc-announce/2017/msg00001.html --- diff --git a/src/resolve/resolved-resolv-conf.c b/src/resolve/resolved-resolv-conf.c index c6f48d6d885..befd8d79491 100644 --- a/src/resolve/resolved-resolv-conf.c +++ b/src/resolve/resolved-resolv-conf.c @@ -231,7 +231,6 @@ static void write_resolv_conf_server(DnsServer *s, FILE *f, unsigned *count) { static void write_resolv_conf_search( OrderedSet *domains, FILE *f) { - unsigned length = 0, count = 0; Iterator i; char *domain; @@ -241,15 +240,6 @@ static void write_resolv_conf_search( fputs("search", f); ORDERED_SET_FOREACH(domain, domains, i) { - if (++count > MAXDNSRCH) { - fputs("\n# Too many search domains configured, remaining ones ignored.", f); - break; - } - length += strlen(domain) + 1; - if (length > 256) { - fputs("\n# Total length of all search domains is too long, remaining ones ignored.", f); - break; - } fputc(' ', f); fputs(domain, f); } diff --git a/test/networkd-test.py b/test/networkd-test.py index b2256948194..140561d25d9 100755 --- a/test/networkd-test.py +++ b/test/networkd-test.py @@ -917,40 +917,7 @@ Domains= one two three four five six seven eight nine ten''') if ' one' in contents: break time.sleep(0.1) - self.assertRegex(contents, 'search .*one two three four') - self.assertNotIn('seven\n', contents) - self.assertIn('# Too many search domains configured, remaining ones ignored.\n', contents) - - def test_search_domains_too_long(self): - - # we don't use this interface for this test - self.if_router = None - - name_prefix = 'a' * 60 - - self.write_network('test.netdev', '''\ -[NetDev] -Name=dummy0 -Kind=dummy -MACAddress=12:34:56:78:9a:bc''') - self.write_network('test.network', '''\ -[Match] -Name=dummy0 -[Network] -Address=192.168.42.100/24 -DNS=192.168.42.1 -Domains={p}0 {p}1 {p}2 {p}3 {p}4'''.format(p=name_prefix)) - - self.start_unit('systemd-networkd') - - for timeout in range(50): - with open(RESOLV_CONF) as f: - contents = f.read() - if ' one' in contents: - break - time.sleep(0.1) - self.assertRegex(contents, 'search .*{p}0 {p}1 {p}2'.format(p=name_prefix)) - self.assertIn('# Total length of all search domains is too long, remaining ones ignored.', contents) + self.assertRegex(contents, 'search .*one two three four five six seven eight nine ten') def test_dropin(self): # we don't use this interface for this test