From: Miroslav Lichvar Date: Thu, 15 Apr 2021 07:43:01 +0000 (+0200) Subject: conf: require sourcedir files to be terminated by newline X-Git-Tag: 4.1-pre1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13a78ecd2f2804e2c14b1e33cdf99a48ed4f6573;p=thirdparty%2Fchrony.git conf: require sourcedir files to be terminated by newline When reading a *.sources file require that each line is termined by the newline character to avoid processing an unfinished line, e.g. due to an unexpected call of the reload command when the file is being written in place. --- diff --git a/conf.c b/conf.c index 3567252f..1f350615 100644 --- a/conf.c +++ b/conf.c @@ -1694,8 +1694,9 @@ load_source_file(const char *filename) return; while (fgets(line, sizeof (line), f)) { - if (strlen(line) >= MAX_LINE_LENGTH) - continue; + /* Require lines to be terminated */ + if (line[0] == '\0' || line[strlen(line) - 1] != '\n') + break; CPS_NormalizeLine(line); if (line[0] == '\0') diff --git a/doc/chrony.conf.adoc b/doc/chrony.conf.adoc index ff95cccf..117b2213 100644 --- a/doc/chrony.conf.adoc +++ b/doc/chrony.conf.adoc @@ -2310,7 +2310,8 @@ confdir @SYSCONFDIR@/chrony.d [[sourcedir]]*sourcedir* _directory_...:: The *sourcedir* directive is identical to the *confdir* directive, except the configuration files have the _.sources_ suffix, they can only specify NTP -sources (i.e. use the *server*, *pool*, and *peer* directive), and can be +sources (i.e. the *server*, *pool*, and *peer* directives), they are expected +to have all lines terminated by the newline character, and they can be reloaded by the <> command in *chronyc*. It is particularly useful with dynamic sources like NTP servers received from a DHCP server, which can be written to a file specific to the