Module: wine Branch: master Commit: 27759315367428c6bd4bed5cf410407bd2d18fb9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=27759315367428c6bd4bed5cf4...
Author: Lauri Kenttä lauri.kentta@gmail.com Date: Sat Feb 4 16:38:03 2017 +0200
msvcrt: Check pmode in _wsopen_dispatch.
Signed-off-by: Lauri Kenttä lauri.kentta@gmail.com Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcrt/file.c | 4 ++-- dlls/ucrtbase/tests/misc.c | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 8965156..24a6e2e 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -2171,8 +2171,8 @@ int CDECL MSVCRT__wsopen_dispatch( const MSVCRT_wchar_t* path, int oflags, int s
if (oflags & MSVCRT__O_CREAT) { - if(pmode & ~(MSVCRT__S_IREAD | MSVCRT__S_IWRITE)) - FIXME(": pmode 0x%04x ignored\n", pmode); + if (secure && !MSVCRT_CHECK_PMT(!(pmode & ~(MSVCRT__S_IREAD | MSVCRT__S_IWRITE)))) + return MSVCRT_EINVAL;
if (oflags & MSVCRT__O_EXCL) creation = CREATE_NEW; diff --git a/dlls/ucrtbase/tests/misc.c b/dlls/ucrtbase/tests/misc.c index cc82022..d8075cc 100644 --- a/dlls/ucrtbase/tests/misc.c +++ b/dlls/ucrtbase/tests/misc.c @@ -396,11 +396,9 @@ static void test__sopen_dispatch(void) SET_EXPECT(global_invalid_parameter_handler); fd = 0; ret = p_sopen_dispatch(tempf, _O_CREAT, _SH_DENYWR, 0xff, &fd, 1); -todo_wine { ok(ret == EINVAL, "got %d\n", ret); ok(fd == -1, "got fd %d\n", fd); CHECK_CALLED(global_invalid_parameter_handler); -} if (fd > 0) { _close(fd); @@ -438,11 +436,9 @@ static void test__sopen_s(void) SET_EXPECT(global_invalid_parameter_handler); fd = 0; ret = p_sopen_s(&fd, tempf, _O_CREAT, _SH_DENYWR, 0xff); -todo_wine { ok(ret == EINVAL, "got %d\n", ret); ok(fd == -1, "got fd %d\n", fd); CHECK_CALLED(global_invalid_parameter_handler); -} p__set_invalid_parameter_handler(NULL);
free(tempf);