aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>2016-05-05 12:34:49 +0100
committerJo-Philipp Wich <jo@mein.io>2016-05-19 10:28:18 +0200
commit2b1556d3e03e69f54f960f0372f12b709fac2f52 (patch)
treeeaccf5bbd0c14690b888aaf5f0ff8728c7a41b6f
parent85a59127a77801b12b8c5d3e4f53d19b5a3b2871 (diff)
downloadupstream-2b1556d3e03e69f54f960f0372f12b709fac2f52.tar.gz
upstream-2b1556d3e03e69f54f960f0372f12b709fac2f52.tar.bz2
upstream-2b1556d3e03e69f54f960f0372f12b709fac2f52.zip
base-files: sysfixtime exclude dnsmasq.time
dnsmasq maintains dnsmasq.time across reboots and uses it as a means of determining if current time is good enough to validate dnssec time stamps. By including /etc/dnsmasq.time as a time source for sysfixtime, the mechanism was effectively defeated because time was set to the last time that dnsmasq considered current even though that time is in the past. Since that time is out of date, dns(sec) resolution would fail thus defeating any ntp based mechanisms for setting the clock correctly. In theory the process is defeated by any files in /etc that are newer than /etc/dnsmasq.time however dnsmasq now updates the file's timestamp on process TERM so hopefully /etc/dnsmasq.time is the latest file timestamp in /etc as part of LEDE shutdown/reboot. Either way, including /etc/dnsmasq.time as a time source for sysfixtime is not helpful. Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
-rwxr-xr-xpackage/base-files/files/etc/init.d/sysfixtime11
1 files changed, 10 insertions, 1 deletions
diff --git a/package/base-files/files/etc/init.d/sysfixtime b/package/base-files/files/etc/init.d/sysfixtime
index ab946f6518..1354a586ce 100755
--- a/package/base-files/files/etc/init.d/sysfixtime
+++ b/package/base-files/files/etc/init.d/sysfixtime
@@ -10,8 +10,8 @@ HWCLOCK=/sbin/hwclock
boot() {
start && exit 0
+ local maxtime="$(maxtime)"
local curtime="$(date +%s)"
- local maxtime="$(find /etc -type f -exec date -r {} +%s \; | sort -nr | head -n1)"
[ $curtime -lt $maxtime ] && date -s @$maxtime
}
@@ -23,3 +23,12 @@ stop() {
[ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -w -f $RTC_DEV && \
logger -t sysfixtime "saved '$(date)' to $RTC_DEV"
}
+
+maxtime() {
+ local file newest
+
+ for file in $( find /etc -type f ! -path /etc/dnsmasq.time ) ; do
+ [ -z "$newest" -o "$newest" -ot "$file"] && newest=$file
+ done
+ [ "$newest" ] && date -r "$newest" +%s
+}