On Tue, 19 Oct 2021 07:53:47 GMT, Daniel Jeliński <d...@openjdk.java.net> wrote:
>> src/java.base/windows/native/libnet/NetworkInterface_winXP.c line 123: >> >>> 121: // not an error >>> 122: *adapters = NULL; >>> 123: return ERROR_SUCCESS; >> >> Mapping ERROR_NO_DATA to ERROR_SUCCESS is probably correct here. Could this >> explain bug reports that seem to be from configurations with no IP addresses >> plumbed? > > I suppose it could. But in order to get ERROR_NO_DATA here one would need to > disable loopback interface. I couldn't find how to do that. There has been one or two reports from configurations that appear to have no interface or no IP addresses. I don't think we've been able to create those configurations to duplicate. In any case, treat NO_DATA as SUCCESS seems correct here. >> src/java.base/windows/native/libnet/NetworkInterface_winXP.c line 232: >> >>> 230: int getAllInterfacesAndAddresses (JNIEnv *env, netif **netifPP) >>> 231: { >>> 232: int ret, flags; >> >> This looks right but I can't relate this to your comment about the crash. > > let me try to explain this clang-style: > - `tableP` contains [random > garbage](https://github.com/openjdk/jdk/blob/a6c89e231872e7fab236ed87b5ccf44a189d6786/src/java.base/windows/native/libnet/NetworkInterface_winXP.c#L233) > - > [lookupIPAddrTable](https://github.com/openjdk/jdk/blob/a6c89e231872e7fab236ed87b5ccf44a189d6786/src/java.base/windows/native/libnet/NetworkInterface_winXP.c#L266) > returns error, does not touch `tableP` > - `ret` is unsigned, so [this is never > true](https://github.com/openjdk/jdk/blob/a6c89e231872e7fab236ed87b5ccf44a189d6786/src/java.base/windows/native/libnet/NetworkInterface_winXP.c#L267) > - uninitialized `tableP` is passed to > [enumAddresses_win_ipaddrtable](https://github.com/openjdk/jdk/blob/a6c89e231872e7fab236ed87b5ccf44a189d6786/src/java.base/windows/native/libnet/NetworkInterface_winXP.c#L272) > - `enumAddresses_win_ipaddrtable` > [dereferences](https://github.com/openjdk/jdk/blob/a6c89e231872e7fab236ed87b5ccf44a189d6786/src/java.base/windows/native/libnet/NetworkInterface.c#L440) > `tableP` and crashes Thanks for this, I hadn't spotted the broken code that tests if loopupIPAddrTable fails. ------------- PR: https://git.openjdk.java.net/jdk/pull/5956