mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
cdfc6788a9
This is a cumulative backport of multiple dnsmasq update commits in master. Drops three LEDE specific patches which are included upstream and another patch which became obsolete. Remaining LEDE specific patches are rebased. Fixes FS#766 - Intermittent SIGSEGV crash of dnsmasq-full. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
48 lines
1.4 KiB
Diff
48 lines
1.4 KiB
Diff
From 79e60e145f8a595bca5a784c00b437216d51de68 Mon Sep 17 00:00:00 2001
|
|
From: Steven Barth <steven@midlink.org>
|
|
Date: Mon, 13 Apr 2015 09:45:20 +0200
|
|
Subject: [PATCH] dnssec: improve timestamp heuristic
|
|
|
|
Signed-off-by: Steven Barth <steven@midlink.org>
|
|
---
|
|
src/dnssec.c | 15 +++++++++++----
|
|
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
|
|
--- a/src/dnssec.c
|
|
+++ b/src/dnssec.c
|
|
@@ -462,17 +462,24 @@ static time_t timestamp_time;
|
|
int setup_timestamp(void)
|
|
{
|
|
struct stat statbuf;
|
|
+ time_t now;
|
|
+ time_t base = 1420070400; /* 1-1-2015 */
|
|
|
|
daemon->back_to_the_future = 0;
|
|
|
|
if (!daemon->timestamp_file)
|
|
return 0;
|
|
+
|
|
+ now = time(NULL);
|
|
+
|
|
+ if (!stat("/proc/self/exe", &statbuf) && difftime(statbuf.st_mtime, base) > 0)
|
|
+ base = statbuf.st_mtime;
|
|
|
|
if (stat(daemon->timestamp_file, &statbuf) != -1)
|
|
{
|
|
timestamp_time = statbuf.st_mtime;
|
|
check_and_exit:
|
|
- if (difftime(timestamp_time, time(0)) <= 0)
|
|
+ if (difftime(now, base) >= 0 && difftime(timestamp_time, now) <= 0)
|
|
{
|
|
/* time already OK, update timestamp, and do key checking from the start. */
|
|
if (utimes(daemon->timestamp_file, NULL) == -1)
|
|
@@ -493,7 +500,7 @@ int setup_timestamp(void)
|
|
|
|
close(fd);
|
|
|
|
- timestamp_time = 1420070400; /* 1-1-2015 */
|
|
+ timestamp_time = base; /* 1-1-2015 */
|
|
tv[0].tv_sec = tv[1].tv_sec = timestamp_time;
|
|
tv[0].tv_usec = tv[1].tv_usec = 0;
|
|
if (utimes(daemon->timestamp_file, tv) == 0)
|