Commit 2ca58402 authored by Juan Lang's avatar Juan Lang Committed by Alexandre Julliard

kernel32: Add some parameter checking to FileTimeToDosDateTime.

parent c4d628cb
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment