https://git.reactos.org/?p=reactos.git;a=commitdiff;h=5b9543c31a443cd997ee3…
commit 5b9543c31a443cd997ee357043ac4fc6119e8df2
Author: Benjamin Aerni <daprogramerforbatch(a)gmail.com>
AuthorDate: Fri Jul 12 23:42:10 2019 -0700
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Jul 21 17:47:13 2019 +0200
[W32TIME] Use a reasonable fallback of 9 hours. (#1724)
CORE-16181
This allows preventing spamming the time servers if the registry entry
becomes corrupted or missing. Also, disallow a setting of less than
2 minutes for the same reasons, and instead use the fallback of 9 hours.
---
base/services/w32time/w32time.c | 24 +++++++++++++-----------
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/base/services/w32time/w32time.c b/base/services/w32time/w32time.c
index c32624f8b9a..d6a6828b637 100644
--- a/base/services/w32time/w32time.c
+++ b/base/services/w32time/w32time.c
@@ -129,16 +129,18 @@ GetIntervalSetting(VOID)
LONG lRet;
dwData = 0;
- if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,
- L"SYSTEM\\CurrentControlSet\\Services\\W32Time\\TimeProviders\\NtpClient",
- 0,
- KEY_QUERY_VALUE,
- &hKey) == ERROR_SUCCESS)
+ lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
+ L"SYSTEM\\CurrentControlSet\\Services\\W32Time\\TimeProviders\\NtpClient",
+ 0,
+ KEY_QUERY_VALUE,
+ &hKey);
+ if (lRet == ERROR_SUCCESS)
{
- /* This key holds the update interval in seconds
- * It is useful for testing to set it to a value of 10 (Decimal)
- * This will cause the clock to try and update every 10 seconds
- * So you can change the time and expect it to be set back correctly in 10-20 seconds
+ /*
+ * This key holds the update interval in seconds.
+ * It is useful for testing to set it to a value of 10 (Decimal).
+ * This will cause the clock to try and update every 10 seconds.
+ * So you can change the time and expect it to be set back correctly in 10-20 seconds.
*/
lRet = RegQueryValueExW(hKey,
L"SpecialPollInterval",
@@ -149,8 +151,8 @@ GetIntervalSetting(VOID)
RegCloseKey(hKey);
}
- if (lRet != ERROR_SUCCESS)
- return 0;
+ if (lRet != ERROR_SUCCESS || dwData < 120)
+ return 9 * 60 * 60; // 9 hours, because Windows uses 9 hrs, 6 mins and 8 seconds by default.
else
return dwData;
}