kernel32: Add some parameter checking to FileTimeToDosDateTime.
This commit is contained in:
parent
c4d628cb02
commit
2ca58402e7
|
@ -600,6 +600,43 @@ static void test_TzSpecificLocalTimeToSystemTime(void)
|
|||
}
|
||||
}
|
||||
|
||||
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");
|
||||
|
@ -612,4 +649,5 @@ START_TEST(time)
|
|||
test_FileTimeToSystemTime();
|
||||
test_FileTimeToLocalFileTime();
|
||||
test_TzSpecificLocalTimeToSystemTime();
|
||||
test_FileTimeToDosDateTime();
|
||||
}
|
||||
|
|
|
@ -1000,9 +1000,18 @@ BOOL WINAPI FileTimeToDosDateTime( const FILETIME *ft, LPWORD fatdate,
|
|||
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)
|
||||
|
|
Loading…
Reference in New Issue