}
}
+static void test_FileTimeToDosDateTime(void)
+{
+ FILETIME ft = { 0 };
+ WORD fatdate, fattime;
+ BOOL ret;
+
+ if (0)
+ {
+ /* Crashes */
+ FileTimeToDosDateTime(NULL, NULL, NULL);
+ }
+ /* Parameter checking */
+ SetLastError(0xdeadbeef);
+ ret = FileTimeToDosDateTime(&ft, NULL, NULL);
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = FileTimeToDosDateTime(&ft, &fatdate, NULL);
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = FileTimeToDosDateTime(&ft, NULL, &fattime);
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = FileTimeToDosDateTime(&ft, &fatdate, &fattime);
+ ok(!ret, "expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER,
+ "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+}
+
START_TEST(time)
{
HMODULE hKernel = GetModuleHandle("kernel32");
test_FileTimeToSystemTime();
test_FileTimeToLocalFileTime();
test_TzSpecificLocalTimeToSystemTime();
+ test_FileTimeToDosDateTime();
}
time_t unixtime;
struct tm* tm;
+ if (!fatdate || !fattime)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
li.u.LowPart = ft->dwLowDateTime;
li.u.HighPart = ft->dwHighDateTime;
- RtlTimeToSecondsSince1970( &li, &t );
+ if (!RtlTimeToSecondsSince1970( &li, &t ))
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
unixtime = t;
tm = gmtime( &unixtime );
if (fattime)