X Tutup
Skip to content

Commit f47fc3f

Browse files
committed
Merge pull request systemd#1693 from ssahani/word
timesysnd: port to extract_first_word
2 parents c2b4c0e + 880603a commit f47fc3f

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

src/resolve/resolved-conf.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@
2222
#include "conf-parser.h"
2323
#include "string-util.h"
2424
#include "resolved-conf.h"
25+
#include "extract-word.h"
2526

2627
int manager_parse_dns_server(Manager *m, DnsServerType type, const char *string) {
27-
const char *word, *state;
28-
size_t length;
2928
DnsServer *first;
3029
int r;
3130

@@ -34,19 +33,23 @@ int manager_parse_dns_server(Manager *m, DnsServerType type, const char *string)
3433

3534
first = type == DNS_SERVER_FALLBACK ? m->fallback_dns_servers : m->dns_servers;
3635

37-
FOREACH_WORD_QUOTED(word, length, string, state) {
38-
char buffer[length+1];
39-
int family;
36+
for(;;) {
37+
_cleanup_free_ char *word;
4038
union in_addr_union addr;
4139
bool found = false;
4240
DnsServer *s;
41+
int family;
42+
43+
r = extract_first_word(&string, &word, NULL, 0);
44+
if (r < 0)
45+
return log_error_errno(r, "Failed to parse resolved dns server syntax \"%s\": %m", string);
4346

44-
memcpy(buffer, word, length);
45-
buffer[length] = 0;
47+
if (r == 0)
48+
break;
4649

47-
r = in_addr_from_string_auto(buffer, &family, &addr);
50+
r = in_addr_from_string_auto(word, &family, &addr);
4851
if (r < 0) {
49-
log_warning("Ignoring invalid DNS address '%s'", buffer);
52+
log_warning("Ignoring invalid DNS address '%s'", word);
5053
continue;
5154
}
5255

src/timesync/timesyncd-conf.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,9 @@
2323
#include "timesyncd-manager.h"
2424
#include "timesyncd-server.h"
2525
#include "timesyncd-conf.h"
26+
#include "extract-word.h"
2627

2728
int manager_parse_server_string(Manager *m, ServerType type, const char *string) {
28-
const char *word, *state;
29-
size_t length;
3029
ServerName *first;
3130
int r;
3231

@@ -35,25 +34,28 @@ int manager_parse_server_string(Manager *m, ServerType type, const char *string)
3534

3635
first = type == SERVER_FALLBACK ? m->fallback_servers : m->system_servers;
3736

38-
FOREACH_WORD_QUOTED(word, length, string, state) {
39-
char buffer[length+1];
37+
for (;;) {
38+
_cleanup_free_ char *word;
4039
bool found = false;
4140
ServerName *n;
4241

43-
memcpy(buffer, word, length);
44-
buffer[length] = 0;
42+
r = extract_first_word(&string, &word, NULL, 0);
43+
if (r < 0)
44+
return log_error_errno(r, "Failed to parse timesyncd server syntax \"%s\": %m", string);
4545

46+
if (r == 0)
47+
break;
4648
/* Filter out duplicates */
4749
LIST_FOREACH(names, n, first)
48-
if (streq_ptr(n->string, buffer)) {
50+
if (streq_ptr(n->string, word)) {
4951
found = true;
5052
break;
5153
}
5254

5355
if (found)
5456
continue;
5557

56-
r = server_name_new(m, NULL, type, buffer);
58+
r = server_name_new(m, NULL, type, word);
5759
if (r < 0)
5860
return r;
5961
}

0 commit comments

Comments
 (0)
X Tutup