diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-10-18 16:17:23 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-10-18 16:23:45 +0200 |
commit | e1b9fc23eb0fb2f67cd9e4a1209db0da2eaa0c9f (patch) | |
tree | 09e2dcf315d36507d0c9b4be5596c6806aeae099 /src/resolve | |
parent | 7c777a7773790375ce648d2a45f97fb2ce3cbd8b (diff) | |
download | systemd-e1b9fc23eb0fb2f67cd9e4a1209db0da2eaa0c9f.tar.gz |
resolved-resolv-conf: FOREACH_LINE excorcism
Diffstat (limited to 'src/resolve')
-rw-r--r-- | src/resolve/resolved-resolv-conf.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/resolve/resolved-resolv-conf.c b/src/resolve/resolved-resolv-conf.c index 1e19586b92..6b74daf776 100644 --- a/src/resolve/resolved-resolv-conf.c +++ b/src/resolve/resolved-resolv-conf.c @@ -4,6 +4,7 @@ #include <stdio_ext.h> #include "alloc-util.h" +#include "def.h" #include "dns-domain.h" #include "fd-util.h" #include "fileio-label.h" @@ -89,7 +90,6 @@ static bool file_is_our_own(const struct stat *st) { int manager_read_resolv_conf(Manager *m) { _cleanup_fclose_ FILE *f = NULL; struct stat st; - char line[LINE_MAX]; unsigned n = 0; int r; @@ -137,10 +137,19 @@ int manager_read_resolv_conf(Manager *m) { dns_server_mark_all(m->dns_servers); dns_search_domain_mark_all(m->search_domains); - FOREACH_LINE(line, f, r = -errno; goto clear) { + for (;;) { + _cleanup_free_ char *line = NULL; const char *a; char *l; + r = read_line(f, LONG_LINE_MAX, &line); + if (r < 0) { + log_error_errno(r, "Failed to read /etc/resolv.conf: %m"); + goto clear; + } + if (r == 0) + break; + n++; l = strstrip(line); |