summaryrefslogtreecommitdiff
path: root/src/resolve
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-10-18 16:17:23 +0200
committerLennart Poettering <lennart@poettering.net>2018-10-18 16:23:45 +0200
commite1b9fc23eb0fb2f67cd9e4a1209db0da2eaa0c9f (patch)
tree09e2dcf315d36507d0c9b4be5596c6806aeae099 /src/resolve
parent7c777a7773790375ce648d2a45f97fb2ce3cbd8b (diff)
downloadsystemd-e1b9fc23eb0fb2f67cd9e4a1209db0da2eaa0c9f.tar.gz
resolved-resolv-conf: FOREACH_LINE excorcism
Diffstat (limited to 'src/resolve')
-rw-r--r--src/resolve/resolved-resolv-conf.c13
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);