https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1938b7484e031483502962...
commit 1938b7484e031483502962208d67993a3267880d Author: Thomas Faber thomas.faber@reactos.org AuthorDate: Sun Jun 3 15:35:42 2018 +0200 Commit: Thomas Faber thomas.faber@reactos.org CommitDate: Sun Jul 7 12:44:51 2019 +0200
[TIMEDATE] Avoid the use of DisplayWin32Error in time sync utility functions. CORE-13001 --- dll/cpl/timedate/internettime.c | 9 ++++- dll/cpl/timedate/timedate.h | 2 +- dll/cpl/timedate/w32time.c | 83 +++++++++++++++++++++++++---------------- 3 files changed, 59 insertions(+), 35 deletions(-)
diff --git a/dll/cpl/timedate/internettime.c b/dll/cpl/timedate/internettime.c index 5a419e40e79..7c971846c7b 100644 --- a/dll/cpl/timedate/internettime.c +++ b/dll/cpl/timedate/internettime.c @@ -204,8 +204,15 @@ InetTimePageProc(HWND hwndDlg, { case IDC_UPDATEBUTTON: { + DWORD dwError; + SetNTPServer(hwndDlg); - SyncTimeNow(); + + dwError = SyncTimeNow(); + if (dwError != ERROR_SUCCESS) + { + DisplayWin32Error(dwError); + } } break;
diff --git a/dll/cpl/timedate/timedate.h b/dll/cpl/timedate/timedate.h index 2fdddbd5a06..73b2a3a7c24 100644 --- a/dll/cpl/timedate/timedate.h +++ b/dll/cpl/timedate/timedate.h @@ -95,7 +95,7 @@ ULONG GetServerTime(LPWSTR lpAddress);
/* w32time.c */ -VOID SyncTimeNow(VOID); +DWORD SyncTimeNow(VOID);
/* monthcal.c */ diff --git a/dll/cpl/timedate/w32time.c b/dll/cpl/timedate/w32time.c index a8aed3f4d15..dfbf14347f1 100644 --- a/dll/cpl/timedate/w32time.c +++ b/dll/cpl/timedate/w32time.c @@ -8,7 +8,7 @@ #include "timedate.h"
/* Get the domain name from the registry */ -static BOOL +static DWORD GetNTPServerAddress(LPWSTR *lpAddress) { HKEY hKey; @@ -16,13 +16,16 @@ GetNTPServerAddress(LPWSTR *lpAddress) DWORD dwSize; LONG lRet;
+ *lpAddress = NULL; + hKey = NULL; + lRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers", 0, KEY_QUERY_VALUE, &hKey); if (lRet != ERROR_SUCCESS) - goto fail; + goto Exit;
/* Get data from default value */ dwSize = 4 * sizeof(WCHAR); @@ -33,7 +36,7 @@ GetNTPServerAddress(LPWSTR *lpAddress) (LPBYTE)szSel, &dwSize); if (lRet != ERROR_SUCCESS) - goto fail; + goto Exit;
dwSize = 0; lRet = RegQueryValueExW(hKey, @@ -43,7 +46,7 @@ GetNTPServerAddress(LPWSTR *lpAddress) NULL, &dwSize); if (lRet != ERROR_SUCCESS) - goto fail; + goto Exit;
(*lpAddress) = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, @@ -51,7 +54,7 @@ GetNTPServerAddress(LPWSTR *lpAddress) if ((*lpAddress) == NULL) { lRet = ERROR_NOT_ENOUGH_MEMORY; - goto fail; + goto Exit; }
lRet = RegQueryValueExW(hKey, @@ -61,38 +64,42 @@ GetNTPServerAddress(LPWSTR *lpAddress) (LPBYTE)*lpAddress, &dwSize); if (lRet != ERROR_SUCCESS) - goto fail; - - RegCloseKey(hKey); + goto Exit;
- return TRUE; - -fail: - DisplayWin32Error(lRet); +Exit: if (hKey) RegCloseKey(hKey); - HeapFree(GetProcessHeap(), 0, *lpAddress); - return FALSE; + if (lRet != ERROR_SUCCESS) + HeapFree(GetProcessHeap(), 0, *lpAddress); + + return lRet; }
/* Request the time from the current NTP server */ -static ULONG -GetTimeFromServer(VOID) +static DWORD +GetTimeFromServer(PULONG pulTime) { - LPWSTR lpAddress = NULL; - ULONG ulTime = 0; + LPWSTR lpAddress; + DWORD dwError;
- if (GetNTPServerAddress(&lpAddress)) + dwError = GetNTPServerAddress(&lpAddress); + if (dwError != ERROR_SUCCESS) { - ulTime = GetServerTime(lpAddress); + return dwError; + }
- HeapFree(GetProcessHeap(), - 0, - lpAddress); + *pulTime = GetServerTime(lpAddress); + if (*pulTime == 0) + { + dwError = ERROR_GEN_FAILURE; }
- return ulTime; + HeapFree(GetProcessHeap(), + 0, + lpAddress); + + return dwError; }
@@ -158,7 +165,7 @@ SystemSetTime(LPSYSTEMTIME lpSystemTime) * 1st Jan, 1900. The time returned from the server * needs adding to that date to get the current Gregorian time */ -static VOID +static DWORD UpdateSystemTime(ULONG ulTime) { FILETIME ftNew; @@ -177,8 +184,7 @@ UpdateSystemTime(ULONG ulTime) /* Convert to a file time */ if (!SystemTimeToFileTime(&stNew, &ftNew)) { - DisplayWin32Error(GetLastError()); - return; + return GetLastError(); }
/* Add on the time passed since 1st Jan 1900 */ @@ -189,23 +195,34 @@ UpdateSystemTime(ULONG ulTime) /* Convert back to a system time */ if (!FileTimeToSystemTime(&ftNew, &stNew)) { - DisplayWin32Error(GetLastError()); - return; + return GetLastError(); }
if (!SystemSetTime(&stNew)) { - DisplayWin32Error(GetLastError()); + return GetLastError(); } + + return ERROR_SUCCESS; }
-VOID +DWORD SyncTimeNow(VOID) { + DWORD dwError; ULONG ulTime; - ulTime = GetTimeFromServer(); + dwError = GetTimeFromServer(&ulTime); + if (dwError != ERROR_SUCCESS) + { + return dwError; + } + if (ulTime != 0) - UpdateSystemTime(ulTime); + { + dwError = UpdateSystemTime(ulTime); + } + + return dwError; }