diff --git a/README.md b/README.md index 348cf8e0..309222b7 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,11 @@ Wine. All those differences are also documented on the Included bug fixes and improvements ----------------------------------- -**Bug fixes and features included in the next upcoming release [4]:** +**Bug fixes and features included in the next upcoming release [5]:** * Globally invalidate key state on changes in other threads ([Wine Bug #29871](https://bugs.winehq.org/show_bug.cgi?id=29871)) * Implement general tab for file property dialog +* Initialize *lpcDevices in RasEnumDevicesA ([Wine Bug #30378](https://bugs.winehq.org/show_bug.cgi?id=30378)) * SecuROM 5.x media validation fails ([Wine Bug #21448](https://bugs.winehq.org/show_bug.cgi?id=21448)) * msvcrt.strtod should initialize *end with NULL on failure diff --git a/debian/changelog b/debian/changelog index 6866c742..cdf6dcaf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,7 @@ wine-staging (1.7.46) UNRELEASED; urgency=low * Added patches to improve crosscompiling Wine for other platforms. * Added patch to improve output of '--check-libs' on OSX. * Added patch to implement general tab for file property dialog. + * Added patch to initialize *lpcDevices in RasEnumDevicesA. * Improved nvcuda-CUDA_Support patchset to search for dylib on OSX. * Improved wined3d-DXTn patchset to search for dylib on OSX. * Updated kernel32-GetVolumePathName to fix several test failures. diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index d32a6b0c..64723e9f 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -189,6 +189,7 @@ patch_enable_all () enable_nvencodeapi_Video_Encoder="$1" enable_opengl32_Revert_Disable_Ext="$1" enable_quartz_MediaSeeking_Positions="$1" + enable_rasapi32_RasEnumDevicesA="$1" enable_regedit_Reg_Parser="$1" enable_riched20_IText_Interface="$1" enable_rpcrt4_Pipe_Transport="$1" @@ -642,6 +643,9 @@ patch_enable () quartz-MediaSeeking_Positions) enable_quartz_MediaSeeking_Positions="$2" ;; + rasapi32-RasEnumDevicesA) + enable_rasapi32_RasEnumDevicesA="$2" + ;; regedit-Reg_Parser) enable_regedit_Reg_Parser="$2" ;; @@ -4018,6 +4022,21 @@ if test "$enable_quartz_MediaSeeking_Positions" -eq 1; then ) >> "$patchlist" fi +# Patchset rasapi32-RasEnumDevicesA +# | +# | This patchset fixes the following Wine bugs: +# | * [#30378] Initialize *lpcDevices in RasEnumDevicesA +# | +# | Modified files: +# | * dlls/rasapi32/rasapi.c, dlls/rasapi32/tests/rasapi.c +# | +if test "$enable_rasapi32_RasEnumDevicesA" -eq 1; then + patch_apply rasapi32-RasEnumDevicesA/0001-rasapi32-Set-lpcDevices-in-RasEnumDevicesA.patch + ( + echo '+ { "Sebastian Lackner", "rasapi32: Set *lpcDevices in RasEnumDevicesA.", 1 },'; + ) >> "$patchlist" +fi + # Patchset regedit-Reg_Parser # | # | Modified files: diff --git a/patches/rasapi32-RasEnumDevicesA/0001-rasapi32-Set-lpcDevices-in-RasEnumDevicesA.patch b/patches/rasapi32-RasEnumDevicesA/0001-rasapi32-Set-lpcDevices-in-RasEnumDevicesA.patch new file mode 100644 index 00000000..7517653e --- /dev/null +++ b/patches/rasapi32-RasEnumDevicesA/0001-rasapi32-Set-lpcDevices-in-RasEnumDevicesA.patch @@ -0,0 +1,123 @@ +From 8377389407d8ab624c79cbb072e7c6e5c1b4a8d5 Mon Sep 17 00:00:00 2001 +From: Sebastian Lackner +Date: Sun, 28 Jun 2015 03:58:23 +0200 +Subject: rasapi32: Set *lpcDevices in RasEnumDevicesA. + +Based on a patch by Qian Hong. +--- + dlls/rasapi32/rasapi.c | 2 ++ + dlls/rasapi32/tests/rasapi.c | 21 +++++++++++++++++++++ + 2 files changed, 23 insertions(+) + +diff --git a/dlls/rasapi32/rasapi.c b/dlls/rasapi32/rasapi.c +index 235ab65..c2a4b55 100644 +--- a/dlls/rasapi32/rasapi.c ++++ b/dlls/rasapi32/rasapi.c +@@ -254,6 +254,8 @@ DWORD WINAPI RasEnumDevicesA(LPRASDEVINFOA lpRasDevinfo, LPDWORD lpcb, LPDWORD l + if(lpRasDevinfo && lpRasDevinfo->dwSize != sizeof(RASDEVINFOA)) + return ERROR_INVALID_SIZE; + ++ *lpcDevices = 1; ++ + if (!lpRasDevinfo || (*lpcb < sizeof(RASDEVINFOA))) { + *lpcb = sizeof(RASDEVINFOA); + return ERROR_BUFFER_TOO_SMALL; +diff --git a/dlls/rasapi32/tests/rasapi.c b/dlls/rasapi32/tests/rasapi.c +index e0ff25f..5171bb2 100644 +--- a/dlls/rasapi32/tests/rasapi.c ++++ b/dlls/rasapi32/tests/rasapi.c +@@ -77,54 +77,71 @@ static void test_rasenum(void) + + /* test first parameter */ + cb = bufsize; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(NULL, &cb, &cDevices); ++ ok(0 < cDevices && cDevices < 32, "expected 0 < cDevices < 32, got %u\n", cDevices); + ok(result == ERROR_BUFFER_TOO_SMALL || + result == ERROR_INVALID_USER_BUFFER, /* win98 */ + "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result); + + rasDevInfo[0].dwSize = 0; + cb = bufsize; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_INVALID_SIZE || + result == ERROR_INVALID_USER_BUFFER, /* win98 */ + "Expected ERROR_INVALID_SIZE, got %08d\n", result); + + rasDevInfo[0].dwSize = sizeof(RASDEVINFOA) -1; + cb = bufsize; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_INVALID_SIZE || + result == ERROR_INVALID_USER_BUFFER, /* win98 */ + "Expected ERROR_INVALID_SIZE, got %08d\n", result); + + rasDevInfo[0].dwSize = sizeof(RASDEVINFOA) +1; + cb = bufsize; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_INVALID_SIZE || + result == ERROR_INVALID_USER_BUFFER, /* win98 */ + "Expected ERROR_INVALID_SIZE, got %08d\n", result); + + /* test second parameter */ + rasDevInfo[0].dwSize = sizeof(RASDEVINFOA); ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, NULL, &cDevices); ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + rasDevInfo[0].dwSize = sizeof(RASDEVINFOA); + cb = 0; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ todo_wine ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_BUFFER_TOO_SMALL || + result == ERROR_INVALID_SIZE, /* vista, 2k8 */ + "Expected ERROR_BUFFER_TOO_SMALL/ERROR_INVALID_SIZE, got %08d\n", result); + + rasDevInfo[0].dwSize = sizeof(RASDEVINFOA); + cb = bufsize -1; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ ok(0 < cDevices && cDevices < 32, "expected 0 < cDevices < 32, got %u\n", cDevices); + ok(result == ERROR_BUFFER_TOO_SMALL, + "Expected ERROR_BUFFER_TOO_SMALL, got %08d\n", result); + + rasDevInfo[0].dwSize = sizeof(RASDEVINFOA); + cb = bufsize +1; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ ok(0 < cDevices && cDevices < 32, "expected 0 < cDevices < 32, got %u\n", cDevices); + ok(result == ERROR_SUCCESS, + "Expected ERROR_SUCCESS, got %08d\n", result); + +@@ -136,7 +153,9 @@ static void test_rasenum(void) + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + + /* test combinations of invalid parameters */ ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(NULL, NULL, &cDevices); ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %08d\n", result); + +@@ -147,7 +166,9 @@ static void test_rasenum(void) + + cb = 0; + rasDevInfo[0].dwSize = 0; ++ cDevices = 0xdeadbeef; + result = pRasEnumDevicesA(rasDevInfo, &cb, &cDevices); ++ ok(cDevices == 0xdeadbeef, "expected cDevices = 0xdeadbeef, got %u\n", cDevices); + ok(result == ERROR_INVALID_SIZE || + broken(result == ERROR_BUFFER_TOO_SMALL), /* win98 */ + "Expected ERROR_INVALID_SIZE, got %08d\n", result); +-- +2.4.3 + diff --git a/patches/rasapi32-RasEnumDevicesA/definition b/patches/rasapi32-RasEnumDevicesA/definition new file mode 100644 index 00000000..6862add9 --- /dev/null +++ b/patches/rasapi32-RasEnumDevicesA/definition @@ -0,0 +1 @@ +Fixes: [30378] Initialize *lpcDevices in RasEnumDevicesA