Required for implementation correctness check in certain protection software.
Thanks to mkrsym1 <mkrsym1(a)gmail.com> for the patch!
--
v5: ntdll/tests: Add tests for ret_len on NtQueryInformationThread HideFromDebugger.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7579
Required for implementation correctness check in certain protection software.
Thanks to mkrsym1 <mkrsym1(a)gmail.com> for the patch!
--
v4: ntdll/tests: Add tests for ret_len on NtQueryInformationThread HideFromDebugger.
ntdll: Return STATUS_ACCESS_VIOLATION from NtQueryInformationThread ThreadHideFromDebugger if *ret_len is not writable.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7579
Required for implementation correctness check in certain protection software.
Thanks to mkrsym1 <mkrsym1(a)gmail.com> for the patch!
--
v3: ntdll: Add tests for ret_len on NtQueryInformationThread HideFromDebugger
ntdll: Write ret_len before checking length
https://gitlab.winehq.org/wine/wine/-/merge_requests/7579
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v10: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
Office 2016/365 has started calling user32.2705 and crashing since it was added in 6e5f547a3907e6fdacf2de7debf9b22abfdaa14d.
--
v2: user32: Forward ordinal 2705 to NtUserIsChildWindowDpiMessageEnabled.
win32u: Add a stub for NtUserIsChildWindowDpiMessageEnabled.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7581
Required for implementation correctness check in certain protection software.
Thanks to mkrsym1 <mkrsym1(a)gmail.com> for the patch!
--
v2: ntdll: Write ret_len before checking length in ThreadHideFromDebugger
https://gitlab.winehq.org/wine/wine/-/merge_requests/7579
--
v8: server: Handle hardlinks and casefolding when renaming the same file.
kernel32/tests: Test renaming a file into a hardlink of itself.
kernel32/tests: Use FindClose instead of CloseHandle when closing
https://gitlab.winehq.org/wine/wine/-/merge_requests/6855
When `split_domain_account` receives a `str->Buffer=L""` with `str->Length=0` the pointer `p` gets already set in the initial assignment two bytes before the allocated memory in line 1209.
Therefore the `if (*p == '\\')` accesses invalid memory.
```
=================================================================
==advapi32_test.exe==1208==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7e89077e01ee at pc 0x6fffff6bb20f bp 0x7ffffe1ff3e0 sp 0x7ffffe1ff428
READ of size 2 at 0x7e89077e01ee thread T0
#0 0x6fffff6bb20e in split_domain_account .../wine/dlls/advapi32/security.c:1212:9
#1 0x6fffff6babe5 in lookup_local_wellknown_name .../wine/dlls/advapi32/security.c:1271:5
#2 0x6fffff6affe0 in lookup_name .../wine/dlls/advapi32/lsa.c:404:11
#3 0x6fffff6b0bbf in LsaLookupSids .../wine/dlls/advapi32/lsa.c:644:17
#4 0x00014002688e in test_LsaLookupSids .../wine/dlls/advapi32/tests/lsa.c:379:14
#5 0x000140024b17 in func_lsa .../wine/dlls/advapi32/tests/lsa.c:514:5
#6 0x00014009f9ee in run_test .../wine/include/wine/test.h:765:5
#7 0x00014009f531 in main .../wine/include/wine/test.h:884:12
#8 0x0001400a0ea3 in mainCRTStartup .../wine/dlls/msvcrt/crt_main.c:58:11
#9 0x6fffffc3565e in BaseThreadInitThunk .../wine/dlls/kernel32/thread.c:61:24
#10 0x6fffffdbbb1a in call_seh_handlers .../wine/dlls/ntdll/signal_x86_64.c:223:28
0x7e89077e01ee is located 2 bytes before 2-byte region [0x7e89077e01f0,0x7e89077e01f2)
allocated by thread T0 here:
#0 0x6ffffe84aa83 in HeapAlloc /home/runner/work/llvm-mingw/llvm-mingw/llvm-project/compiler-rt\lib/asan/asan_malloc_win.cpp:230:3
#1 0x6ffffe44016b in msvcrt_heap_alloc .../wine/dlls/msvcrt/heap.c:71:12
#2 0x6ffffe440739 in malloc .../wine/dlls/msvcrt/heap.c:436:15
#3 0x6fffff6b0afa in LsaLookupSids .../wine/dlls/advapi32/lsa.c:636:24
#4 0x00014002688e in test_LsaLookupSids .../wine/dlls/advapi32/tests/lsa.c:379:14
#5 0x000140024b17 in func_lsa .../wine/dlls/advapi32/tests/lsa.c:514:5
#6 0x00014009f9ee in run_test .../wine/include/wine/test.h:765:5
#7 0x00014009f531 in main .../wine/include/wine/test.h:884:12
#8 0x0001400a0ea3 in mainCRTStartup .../wine/dlls/msvcrt/crt_main.c:58:11
#9 0x6fffffc3565e in BaseThreadInitThunk .../wine/dlls/kernel32/thread.c:61:24
#10 0x6fffffdbbb1a in call_seh_handlers .../wine/dlls/ntdll/signal_x86_64.c:223:28
SUMMARY: AddressSanitizer: heap-buffer-overflow .../wine/dlls/advapi32/security.c:1212:9 in split_domain_account
Shadow bytes around the buggy address:
0x7e89077dff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7e89077dff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7e89077e0000: fa fa 00 00 fa fa 02 fa fa fa 04 fa fa fa 02 fa
0x7e89077e0080: fa fa 04 fa fa fa 02 fa fa fa 04 fa fa fa 02 fa
0x7e89077e0100: fa fa 04 fa fa fa 02 fa fa fa 04 fa fa fa 00 00
=>0x7e89077e0180: fa fa fd fd fa fa fd fd fa fa fd fd fa[fa]02 fa
0x7e89077e0200: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7e89077e0280: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7e89077e0300: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7e89077e0380: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7e89077e0400: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==advapi32_test.exe==1208==ABORTING
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7574
This serie is the first of a long serie for rewriting the PDB debug format
support in dbnghelp.
For historical reasons, builtin dbghelp always fully loads every debug
information (type, symbol...) for a given module, and transforms it
into an internal representation (common to all debug formats: stabs, dwarf*,
PDB...).
This turns out to be slow and memory hungry.
For example, using a chromium based DLL, where PDB file breaks the 4G size
barrier, load time of debug info is ~80s, and requires ~20GB of virtual
memory.
Target of rewrite:
- break monolothic approach in dbghelp to allow finer granularity in
what's loaded (moving to a per compilation unit approach instead of full
module)
- reduce memory usage (for above example, current rewrite state is 20MB of
virtual memory, and <4s of load time)
- (potential) degradation of performance for some requests
+ may need to load/peruse additional information (not loaded at once)
+ request code hasn't been optimized for performance (on purpose), so that we
can balance performance vs in-process memory (caching some more bits)
We start with some series about cleanup, fixes, optimisation in dbghelp
(that will favor all debug formats, not only PDB).
This serie:
- fixes a crash for .DBG file
- fixes >4G PDB loading (so that we can measure improvements ;-)
- introduces a new approach for internal vector representation (reduces
memory usage),
- some cleanup,
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7573
This MR adds an initial implementation of the winsock `WSALookupsService*` methods for performing Bluetooth device discovery (`LUP_CONTAINERS`).
Pending !7472, the code will also eventually support performing device inquiry scans.
--
v9: ws2_32: Implement WSALookupServiceNext for Bluetooth device discovery.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7542
Needed by the Guild Wars 2 installer.
--
The installer fetches this with GetProcAddress. It was fine when the function was missing, but now tries to call the .spec stub added in 7a92a33b. See also !5479.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7572
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v9: mfplat/tests: Add tests for Byte Stream Timestamps.
mfsrcsnk: Allow NULL for time_format.
winegstreamer: Allow NULL for time_format.
mfplat/tests: Fix leak of media source.
mfplat/tests: Fix leak of media events.
mfplat/tests: Fix crash in MFShutdown on Windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v8: mfplat/tests: Add tests for Byte Stream Timestamps.
mfsrcsnk: Allow NULL for time_format.
winegstreamer: Allow NULL for time_format.
mfplat/tests: Fix leak of media source.
mfplat/tests: Fix leak of media events.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v7: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
--
v7: server: Handle destination file replaced by a directory after trying
server: Avoid fstat when comparing inode/device for renaming.
server: Handle hardlinks and casefolding when renaming the same file.
kernel32/tests: Test renaming a file into a hardlink of itself.
kernel32/tests: Use FindClose instead of CloseHandle when closing
https://gitlab.winehq.org/wine/wine/-/merge_requests/6855
This MR adds an initial implementation of the winsock `WSALookupsService*` methods for performing Bluetooth device discovery (`LUP_CONTAINERS`).
Pending !7472, the code will also eventually support performing device inquiry scans.
--
v7: ws2_32: Implement WSALookupServiceNext for Bluetooth device discovery.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7542
Trying to browse through the debugger.chm from an old windbg version with hh.exe, I encountered below ASan message.
The reallocation path was not entered when `This->travellog.size < This->travellog.position+1`, with e.g. size == 4 and position == 3.
Unfortunately the increment of position takes place a few lines later, therefore writing at index 4 of array with size 4.
```
=================================================================
==hh.exe==316==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x7e99833c9a80 at pc 0x6ffffe8490da bp 0x7ffffe1fea70 sp 0x7ffffe1feab0
WRITE of size 16 at 0x7e99833c9a80 thread T0
#0 0x6ffffe8490d9 in __asan_memset /home/runner/work/llvm-mingw/llvm-mingw/llvm-project/compiler-rt\lib/asan/asan_interceptors_memintrinsics.cpp:67:3
#1 0x6ffffa7cb968 in update_travellog /home/bernhard/data/entwicklung/2025/wine\wine/dlls/ieframe/dochost.c:471:59
#2 0x6ffffa7caf09 in ClOleCommandTarget_Exec /home/bernhard/data/entwicklung/2025/wine\wine/dlls/ieframe/dochost.c:780:13
#3 0x6ffff929b38a in IOleCommandTarget_Exec /home/bernhard/data/entwicklung/2025/wine/wine-build/llvm-newwow64-asan-pe/obj\include\docobj.h:848:12
#4 0x6ffff929ad8c in notify_travellog_update /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/persist.c:71:9
#5 0x6ffff929a82b in set_current_mon /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/persist.c:108:17
#6 0x6ffff923abb7 in navigate_proc /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/navigate.c:2155:9
#7 0x6ffff92d43df in hidden_proc /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/task.c:398:17
#8 0x6ffffd3f3c8e in WINPROC_wrapper /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/winproc.c:86:12
#9 0x6ffffd3f28c8 in call_window_proc /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/winproc.c:111:15
#10 0x6ffffd3f2ab2 in dispatch_win_proc_params /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/winproc.c
#11 0x6ffffd3df4fb in dispatch_message /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/message.c:804:14
#12 0x6ffffd3df5a1 in DispatchMessageW /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/message.c:890:16
#13 0x6ffffdc63d8e in doWinMain /home/bernhard/data/entwicklung/2025/wine\wine/dlls/hhctrl.ocx/hhctrl.c:580:9
#14 0x000140001036 in WinMain /home/bernhard/data/entwicklung/2025/wine\wine/programs/hh/main.c:34:12
#15 0x00014000118f in main /home/bernhard/data/entwicklung/2025/wine\wine/dlls/msvcrt/crt_winmain.c:53:12
#16 0x0001400010b5 in mainCRTStartup /home/bernhard/data/entwicklung/2025/wine\wine/dlls/msvcrt/crt_main.c:58:11
#17 0x6fffffc3565e in BaseThreadInitThunk /home/bernhard/data/entwicklung/2025/wine\wine/dlls/kernel32/thread.c:61:24
#18 0x6fffffdbba1a in RtlUserThreadStart (C:\windows\system32\ntdll.dll+0x17004ba1a)
0x7e99833c9a80 is located 0 bytes after 64-byte region [0x7e99833c9a40,0x7e99833c9a80)
allocated by thread T0 here:
#0 0x6ffffe84a4a1 in malloc /home/runner/work/llvm-mingw/llvm-mingw/llvm-project/compiler-rt\lib/asan/asan_malloc_win.cpp:80:3
#1 0x6ffffa7cb68b in update_travellog /home/bernhard/data/entwicklung/2025/wine\wine/dlls/ieframe/dochost.c:437:31
#2 0x6ffffa7caf09 in ClOleCommandTarget_Exec /home/bernhard/data/entwicklung/2025/wine\wine/dlls/ieframe/dochost.c:780:13
#3 0x6ffff929b38a in IOleCommandTarget_Exec /home/bernhard/data/entwicklung/2025/wine/wine-build/llvm-newwow64-asan-pe/obj\include\docobj.h:848:12
#4 0x6ffff929ad8c in notify_travellog_update /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/persist.c:71:9
#5 0x6ffff929a82b in set_current_mon /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/persist.c:108:17
#6 0x6ffff923abb7 in navigate_proc /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/navigate.c:2155:9
#7 0x6ffff92d43df in hidden_proc /home/bernhard/data/entwicklung/2025/wine\wine/dlls/mshtml/task.c:398:17
#8 0x6ffffd3f3c8e in WINPROC_wrapper /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/winproc.c:86:12
#9 0x6ffffd3f28c8 in call_window_proc /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/winproc.c:111:15
#10 0x6ffffd3f2ab2 in dispatch_win_proc_params /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/winproc.c
#11 0x6ffffd3df4fb in dispatch_message /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/message.c:804:14
#12 0x6ffffd3df5a1 in DispatchMessageW /home/bernhard/data/entwicklung/2025/wine\wine/dlls/user32/message.c:890:16
#13 0x6ffffdc63d8e in doWinMain /home/bernhard/data/entwicklung/2025/wine\wine/dlls/hhctrl.ocx/hhctrl.c:580:9
#14 0x000140001036 in WinMain /home/bernhard/data/entwicklung/2025/wine\wine/programs/hh/main.c:34:12
#15 0x00014000118f in main /home/bernhard/data/entwicklung/2025/wine\wine/dlls/msvcrt/crt_winmain.c:53:12
#16 0x0001400010b5 in mainCRTStartup /home/bernhard/data/entwicklung/2025/wine\wine/dlls/msvcrt/crt_main.c:58:11
#17 0x6fffffc3565e in BaseThreadInitThunk /home/bernhard/data/entwicklung/2025/wine\wine/dlls/kernel32/thread.c:61:24
#18 0x6fffffdbba1a in RtlUserThreadStart (C:\windows\system32\ntdll.dll+0x17004ba1a)
SUMMARY: AddressSanitizer: heap-buffer-overflow /home/bernhard/data/entwicklung/2025/wine\wine/dlls/ieframe/dochost.c:471:59 in update_travellog
Shadow bytes around the buggy address:
0x7e99833c9800: fd fd fd fd fd fd fd fa fa fa fa fa fd fd fd fd
0x7e99833c9880: fd fd fd fa fa fa fa fa fd fd fd fd fd fd fd fd
0x7e99833c9900: fa fa fa fa 00 00 00 00 00 00 00 fa fa fa fa fa
0x7e99833c9980: 00 00 00 00 00 00 00 fa fa fa fa fa fd fd fd fd
0x7e99833c9a00: fd fd fd fd fa fa fa fa 00 00 00 00 00 00 00 00
=>0x7e99833c9a80:[fa]fa fa fa fd fd fd fd fd fd fd fd fa fa fa fa
0x7e99833c9b00: 00 00 00 00 00 00 00 fa fa fa fa fa fd fd fd fd
0x7e99833c9b80: fd fd fd fa fa fa fa fa 00 00 00 00 00 00 00 fa
0x7e99833c9c00: fa fa fa fa 00 00 00 00 00 00 00 fa fa fa fa fa
0x7e99833c9c80: 00 00 00 00 00 00 00 fa fa fa fa fa fd fd fd fd
0x7e99833c9d00: fd fd fd fd fa fa fa fa fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
```
--
v3: ieframe: Enter reallocation path one position earlier (ASan).
https://gitlab.winehq.org/wine/wine/-/merge_requests/7544
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v2: comctl32/listview: Handle WM_VSCROLL(SB_TOP).
comctl32/listview: Invert origin coordinate for LVM_GETORIGIN.
comctl32/tests: Add a test for LVM_GETORIGIN returned coordinate.
comctl32/tests: Run LVM_GETORIGIN tests on v6.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7541
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v6: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v5: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v4: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This series contain fixes for winedump for debug information:
- it fixes a bunch of incorrect information dumping,
- it fixes a case of crash for .DBG files,
- it allows dumping very large PDB files (>4G)
Note: for the later item, current tools' read_file() doesn't work with
such large files.
Instead of fixing read_file(), I opted for letting a dumper for a
given file format to only use a fd to the target file, instead of
forcing all dumpers to work from a full in-memory image of the target
file. This is useful for PDB files, as their underlying storage
requires to reassemble non-contiguous blocks, so this saves memory
(the in-memory image of the target file) and one copy of the whole file.
This means that all functions to guess the file format now uses a fd
instead of the full image.
--
v3: tools/winedump: Support dumping large PDB files (>4G).
winedump,dbghelp: Remove flexible array member from PDB JG header.
tools/winedump: Support more than 64K files in PDB DBI module source substream.
tools/winedump: Don't miss hash entries in PDB files.
tools/winedump: Don't miss PDB_SYMBOL_RANGE* in PDB files.
tools/winedump: Use correct field when dumping CodeView symbols.
tools/winedump: Use correct computation for first section out of a .DBG file.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7212
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v3: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
v2: mfplat/tests: Add tests for Byte Stream Timestamps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
This MR adds tests to `mfplat` to illustrate the timestamp values output on the samples for the respective Byte Stream handlers.
I have also included a fix for a bug in `winegstreamer` (and copied to `mfsrcsnk`) where a `NULL` value for the `pguidTimeFormat` parameter in `IMFMediaSource::Start` causes a segmentation fault. On Windows this is allowed. It is included in this MR as the `mfplat` tests pass NULL (so without this fix, the tests crash).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7569
Based on top of tests MR !7125.
--
v2: mfreadwrite: Implement IMFSinkWriterEx.
mfreadwrite: Implement create_transform.
mfreadwrite: Implement sink_writer_SetInputMediaType.
mfreadwrite: Rename update_media_type_from_upstream and make it non-static.
mfreadwrite: Use a transform array for writer.
mfreadwrite/tests: Test sample processing for mp4 sink writer.
mfreadwrite/tests: Test getting transforms from mp4 sink writer.
mfreadwrite/tests: Test AddStream and SetInputMediaType for mp4 sink writer.
mfreadwrite/tests: Remove trivial if.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7160
On Wed Mar 12 10:25:16 2025 +0000, Jacek Caban wrote:
> Those are interesting findings, thanks. Could you please also check
> what's the behavior for missing "Expires" header? It sounds like we
> should change error handling in `HTTP_ProcessExpires`, I wonder if
> `!expirationFound` branch there is right...
Ok, I will try to check it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7323#note_97642
These tests serve to illustrate the output sample time and duration values from their respective native MFT video decoders with respect to the following circumstances:
1. When no frame rate nor input sample timestamps are provided;
2. When a frame rate is provided but there are no sample timestamps; and
3. When a frame rate is provided, but the input sample timestamps disagree with this value
It also highlights the gap in our implementation. However, I don't believe this can be fixed without first confirming the correct output from our IMFMediaStream implementations.
--
v2: mf/tests: Test timestamps in WMV decoder.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7563
These tests serve to illustrate the output sample time and duration values from their respective native MFT video decoders with respect to the following circumstances:
1. When no frame rate nor input sample timestamps are provided;
2. When a frame rate is provided but there are no sample timestamps; and
3. When a frame rate is provided, but the input sample timestamps disagree with this value
It also highlights the gap in our implementation. However, I don't believe this can be fixed without first confirming the correct output from our IMFMediaStream implementations.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7563
This MR adds an initial implementation of the winsock `WSALookupsService*` methods for performing Bluetooth device discovery (`LUP_CONTAINERS`).
Pending !7472, the code will also eventually support performing device inquiry scans.
--
v5: ws2_32: Implement WSALookupServiceNext for Bluetooth device discovery.
ws2_32: Implement WSALookupServiceBegin for Bluetooth device discovery.
ws2_32/tests: Add tests for Bluetooth device discovery in WSALookupServiceBegin/Next.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7542
On Wed Mar 12 10:25:16 2025 +0000, Yongjie Yao wrote:
> I add 5 tests to test_http_connection().
> The first test sends "Expires: 0", the second test sends "Expires: -1",
> the third test sends "Expires: 100", the fourth test sends "Expires:
> invalid date", the fifth test sends "Expires: Thu, 06 Mar 2025 06:08:11 GMT".
> The tests on actual windows 10 has output informations, such as:
> ```null
> http.c:6837: expires: 2025-03-06 06:14:13, current time: 2025-03-06
> 06:14:13, server response expires: 0
> http.c:6837: expires: 2025-03-06 06:14:14, current time: 2025-03-06
> 06:14:14, server response expires: -1
> http.c:6837: expires: 2025-03-06 06:14:14, current time: 2025-03-06
> 06:14:14, server response expires: 100
> http.c:6837: expires: 2025-03-06 05:14:15, current time: 2025-03-06
> 06:14:15, server response expires: invalid date
> http.c:6837: expires: 2025-03-06 06:08:11, current time: 2025-03-06
> 06:14:15, server response expires: Thu, 06 Mar 2025 06:08:11 GMT
> ```
> I think Windows treats all numbers as invalid values and sets the
> expiration time to the current system time, while other invalid values
> set the expiration time to one hour before the current system time, and
> valid expiration times use the set expiration time.
> In Wine, handling inconsistencies with Windows 10, We treat "0" as
> "1601-01-01 00:00:00", and all other invalid values as 10 minutes after
> the current system time. such as
> ```coffeescript
> http.c:6837: expires: 1601-01-01 00:00:00, current time: 2025-03-06
> 06:10:56, server response expires: 0
> 0118:err:wininet:HTTP_ParseDateAsAsctime unexpected weekday L"-1"
> 0118:err:wininet:HTTP_ParseDate unexpected date format L"-1"
> http.c:6837: expires: 2025-03-06 06:20:56, current time: 2025-03-06
> 06:10:57, server response expires: -1
> 0110:err:wininet:HTTP_ParseDateAsAsctime unexpected weekday L"100"
> 0110:err:wininet:HTTP_ParseDate unexpected date format L"100"
> http.c:6837: expires: 2025-03-06 06:20:56, current time: 2025-03-06
> 06:10:57, server response expires: 100
> 0118:err:wininet:HTTP_ParseDateAsAsctime unexpected weekday L"inv"
> 0118:err:wininet:HTTP_ParseDate unexpected date format L"invalid date"
> http.c:6837: expires: 2025-03-06 06:20:56, current time: 2025-03-06
> 06:10:58, server response expires: invalid date
> http.c:6837: expires: 2025-03-06 06:08:10, current time: 2025-03-06
> 06:10:58, server response expires: Thu, 06 Mar 2025 06:08:11 GMT
> ```
Those are interesting findings, thanks. Could you please also check what's the behavior for missing "Expires" header? It sounds like we should change error handling in `HTTP_ProcessExpires`, I wonder if `!expirationFound` branch there is right...
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7323#note_97540