[TIMEDATE] Correctly set the time when using the "Update now" button. CORE-14167

This commit is contained in:
Doug Lyons 2018-01-16 16:40:03 +01:00 committed by Thomas Faber
parent 682735fb56
commit 912434849f
No known key found for this signature in database
GPG key ID: 076E7C3D44720826
4 changed files with 22 additions and 10 deletions

View file

@ -14,7 +14,8 @@
static WNDPROC pOldWndProc = NULL;
BOOL
SystemSetLocalTime(LPSYSTEMTIME lpSystemTime)
SystemSetTime(LPSYSTEMTIME lpSystemTime,
BOOL SystemTime)
{
HANDLE hToken;
DWORD PrevSize;
@ -45,11 +46,20 @@ SystemSetLocalTime(LPSYSTEMTIME lpSystemTime)
GetLastError() == ERROR_SUCCESS)
{
/*
* We successfully enabled it, we're permitted to change the system time
* Call SetLocalTime twice to ensure correct results
* We successfully enabled it, we're permitted to change the time.
* Check the second parameter for SystemTime and if TRUE set System Time.
* Otherwise, if FALSE set the Local Time.
* Call SetLocalTime twice to ensure correct results.
*/
Ret = SetLocalTime(lpSystemTime) &&
SetLocalTime(lpSystemTime);
if (SystemTime)
{
Ret = SetSystemTime(lpSystemTime);
}
else
{
Ret = SetLocalTime(lpSystemTime) &&
SetLocalTime(lpSystemTime);
}
/*
* For the sake of security, restore the previous status again
@ -86,7 +96,8 @@ SetLocalSystemTime(HWND hwnd)
(WPARAM)&Time,
0))
{
SystemSetLocalTime(&Time);
/* Set Local Time with SystemTime = FALSE */
SystemSetTime(&Time, FALSE);
SetWindowLongPtrW(hwnd,
DWL_MSGRESULT,

View file

@ -258,7 +258,8 @@ UpdateSystemTime(ULONG ulTime)
return;
}
if (!SystemSetLocalTime(&stNew))
/* Use SystemSetTime with SystemTime = TRUE to set System Time */
if (!SystemSetTime(&stNew, TRUE))
DisplayWin32Error(GetLastError());
}

View file

@ -121,15 +121,15 @@ ReceiveData(PINFO pInfo)
if ((Ret != SOCKET_ERROR) && (Ret != 0))
{
Ret = recvfrom(pInfo->Sock,
(char *)&pInfo->RecvPacket,
sizeof(pInfo->RecvPacket),
0,
NULL,
NULL);
if (Ret != SOCKET_ERROR)
ulTime = ntohl(ulTime);
ulTime = ntohl(pInfo->RecvPacket.TransmitTimestamp.dwInteger);
}
return ulTime;

View file

@ -39,7 +39,7 @@ extern HINSTANCE hApplet;
/* dateandtime.c */
INT_PTR CALLBACK DateTimePageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL SystemSetLocalTime(LPSYSTEMTIME lpSystemTime);
BOOL SystemSetTime(LPSYSTEMTIME lpSystemTime, BOOL SystemTime);
/* timezone.c */