On Wed, 19 Jan 2022 08:15:24 GMT, Daniel Jeliński <djelin...@openjdk.org> wrote:

>> Clean up of various issues related to error handling and memory management
>
> Daniel Jeliński has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains 12 additional 
> commits since the last revision:
> 
>  - Fix invalid free
>  - Merge remote-tracking branch 'origin' into interface-cleanup
>  - Remove redundant initialization
>  - Remove unused / incorrect exit code -2 from enumInterfaces
>  - Address problems reported by clang-tidy
>  - Restore support for IPv6-only operation
>  - Fix memory leak
>  - Fixup getAllInterfacesAndAddresses
>  - Fixup getAddrsFromAdapter
>  - Fixup enumAddresses_win
>  - ... and 2 more: 
> https://git.openjdk.java.net/jdk/compare/15024daa...98b40812

src/java.base/windows/native/libnet/NetworkInterface_winXP.c line 253:

> 251: 
> 252:     ret = enumInterfaces(env, netifPP);
> 253:     if (ret < 0) {

Why did we remove handling for -2 here when `enumInterfaces` might return -2 if 
it does not find any IPv4 network interface? Shouldn't we keep the code that 
reset the exception status and set *netifPP = null here if ret == -2?

src/java.base/windows/native/libnet/NetworkInterface_winXP.c line 271:

> 269:     ret = lookupIPAddrTable(env, &tableP);
> 270:     if (ret == -1) {
> 271:       free_netif(*netifPP);

*netifPP might be null here.

src/java.base/windows/native/libnet/NetworkInterface_winXP.c line 280:

> 278:         tableP = NULL;
> 279:     }
> 280:     while (curr != NULL) {

Maybe we should not enter here if tableP == null. Looks like it should be 
`while ( curr != NULL && tableP != null)` - either that or guard the block with 
an `if (tableP != NULL)` ?

src/java.base/windows/native/libnet/NetworkInterface_winXP.c line 297:

> 295:     flags = GAA_FLAG_SKIP_DNS_SERVER;
> 296:     flags |= GAA_FLAG_SKIP_MULTICAST;
> 297:     flags |= GAA_FLAG_INCLUDE_PREFIX;

tableP could be null at lime 293 - `free(tableP)` should be guarded by a null 
check

-------------

PR: https://git.openjdk.java.net/jdk/pull/6090

Reply via email to