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

Reply via email to