Kanit Therdsteerasukdi : comctl32: datetime: Reject out of range dates in DTM_SETSYSTEMTIME.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Mar 14 07:25:29 CDT 2007


Module: wine
Branch: master
Commit: fe5471e717e2712a10f528e4b39d081f956c3e54
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fe5471e717e2712a10f528e4b39d081f956c3e54

Author: Kanit Therdsteerasukdi <therdste at cs.ucla.edu>
Date:   Mon Mar 12 14:19:16 2007 -0800

comctl32: datetime: Reject out of range dates in DTM_SETSYSTEMTIME.

---

 dlls/comctl32/datetime.c       |   11 +++++++++++
 dlls/comctl32/tests/datetime.c |    6 ++----
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index 7b24403..08e0d58 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -160,6 +160,17 @@ DATETIME_SetSystemTime (DATETIME_INFO *infoPtr, DWORD flag, SYSTEMTIME *lprgSysT
           lprgSysTimeArray->wYear, lprgSysTimeArray->wMonth, lprgSysTimeArray->wDay,
           lprgSysTimeArray->wHour, lprgSysTimeArray->wMinute, lprgSysTimeArray->wSecond);
 
+    if (lprgSysTimeArray->wYear < 1601 || lprgSysTimeArray->wYear > 30827 ||
+	lprgSysTimeArray->wMonth < 1 || lprgSysTimeArray->wMonth > 12 ||
+	lprgSysTimeArray->wDayOfWeek > 6 ||
+	lprgSysTimeArray->wDay < 1 || lprgSysTimeArray->wDay > 31 ||
+	lprgSysTimeArray->wHour > 23 ||
+	lprgSysTimeArray->wMinute > 59 ||
+	lprgSysTimeArray->wSecond > 59 ||
+	lprgSysTimeArray->wMilliseconds > 999
+	)
+      return 0;
+
     if (flag == GDT_VALID) {
         infoPtr->dateValid = TRUE;
         MONTHCAL_CopyTime (lprgSysTimeArray, &infoPtr->date);
diff --git a/dlls/comctl32/tests/datetime.c b/dlls/comctl32/tests/datetime.c
index 18c5a32..3751862 100644
--- a/dlls/comctl32/tests/datetime.c
+++ b/dlls/comctl32/tests/datetime.c
@@ -509,10 +509,8 @@ static void test_dtm_set_and_get_system_time(HWND hWndDateTime)
     /* set st to invalid value */
     fill_systime_struct(&st, 0, 0, 7, 0, 24, 60, 60, 1000);
 
-    todo_wine {
-        r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
-        expect_unsuccess(0, r);
-    }
+    r = SendMessage(hWndDateTime, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
+    expect_unsuccess(0, r);
 
     ok_sequence(sequences, DATETIME_SEQ_INDEX, test_dtm_set_and_get_system_time_seq, "test_dtm_set_and_get_system_time", FALSE);
     flush_sequences(sequences, NUM_MSG_SEQUENCES);




More information about the wine-cvs mailing list