[Bug 46149] New: Multiple applications need ntdll.dll.RtlIpv4StringToAddress{A,W,ExA, ExW} implementation (Processhacker 2.x)

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Nov 14 15:25:05 CST 2018


https://bugs.winehq.org/show_bug.cgi?id=46149

            Bug ID: 46149
           Summary: Multiple applications need
                    ntdll.dll.RtlIpv4StringToAddress{A,W,ExA,ExW}
                    implementation (Processhacker 2.x)
           Product: Wine
           Version: 3.20
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ntdll
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

needed for some tools like 'processhacker' (via plugins-extra) and/or Win
Vista+ native wininet (attempt to prove bug 45847).

--- snip ---
...
0059:fixme:ntdll:RtlIpv4StringToAddressExW (L"origin.*", 1, 0x7d4fd50,
0x7d4fd4e): stub
0059:fixme:ntdll:RtlIpv6StringToAddressExW (L"origin.*", 0x7d4fd54, 0x7d4fd64,
0x7d4fd4e): stub
...
0059:fixme:ntdll:RtlIpv4StringToAddressExW (L"origin.warframe.com", 1,
0x7d4fd24, 0x7d4fd22): stub
0059:fixme:ntdll:RtlIpv6StringToAddressExW (L"origin.warframe.com", 0x7d4fd28,
0x7d4fd38, 0x7d4fd22): stub
...
0059:trace:seh:raise_exception code=80000100 flags=1 addr=0x7bc53371
ip=7bc53371 tid=0059
0059:trace:seh:raise_exception  info[0]=63184658
0059:trace:seh:raise_exception  info[1]=63186020
wine: Call from 0x7bc53371 to unimplemented function
ntdll.dll.RtlIpv4StringToAddressExA, aborting
0059:trace:seh:call_stack_handlers calling handler at 0x48b6cc code=80000100
flags=1
0059:trace:seh:call_stack_handlers handler at 0x48b6cc returned 1
0059:trace:seh:call_stack_handlers calling handler at 0x4620a0 code=80000100
flags=1
0059:trace:seh:call_stack_handlers handler at 0x4620a0 returned 1
0059:trace:seh:call_stack_handlers calling handler at 0x7bca6fa0 code=80000100
flags=1
wine: Unimplemented function ntdll.dll.RtlIpv4StringToAddressExA called at
address 0x7bc53371 (thread 0059), starting debugger...
...
--- snip ---

Process hacker plugins-extra:

https://github.com/processhacker/plugins-extra/blob/master/FirewallMonitorPlugin/monitor.c#L263

https://github.com/processhacker/plugins-extra/blob/master/FirewallMonitorPlugin/monitor.c#L297

Wine source:

https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/ntdll/ntdll.spec

--- snip ---
 732 @ stdcall RtlIpv4AddressToStringA(ptr ptr)
 733 @ stdcall RtlIpv4AddressToStringExA(ptr long ptr ptr)
 734 @ stdcall RtlIpv4AddressToStringExW(ptr long ptr ptr)
 735 @ stdcall RtlIpv4AddressToStringW(ptr ptr)
 736 # @ stub RtlIpv4StringToAddressA
 737 # @ stub RtlIpv4StringToAddressExA
 738 @ stdcall RtlIpv4StringToAddressExW(wstr long ptr ptr)
 739 @ stdcall RtlIpv4StringToAddressW(wstr long ptr ptr)
 740 # @ stub RtlIpv6AddressToStringA
 741 # @ stub RtlIpv6AddressToStringExA
 742 # @ stub RtlIpv6AddressToStringExW
 743 # @ stub RtlIpv6AddressToStringW
 744 # @ stub RtlIpv6StringToAddressA
 745 # @ stub RtlIpv6StringToAddressExA
 746 @ stdcall RtlIpv6StringToAddressExW(wstr ptr ptr ptr)
 747 # @ stub RtlIpv6StringToAddressW
--- snip ---

https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/ntdll/rtl.c#l897

https://source.winehq.org/git/wine.git/commitdiff/71e04aaa38b35ab1607962ad30da2e54238fd0ac

Looks pretty inconsistent. There is no pattern between Ipv4, Ipv6 and/or A/W
ExA/ExW pairs of the API recognizable here.
Some are auto-generated stubs, some are stubs, some are simply not present
(commented out). 

The Ipv4 string <-> address functions are not very hard to implement.
Wine tests for this family of functions were added some time ago via
Wine-Staging:

https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/ntdll/tests/rtl.c#l1258

*
https://docs.microsoft.com/en-us/windows/desktop/api/ip2string/nf-ip2string-rtlipv4stringtoaddressa
*
https://docs.microsoft.com/en-us/windows/desktop/api/ip2string/nf-ip2string-rtlipv4stringtoaddressexw

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list