Hi Vyom,
thanks for the feedback ... interesting question and at a more
general level is it safe to release a local reference
if there is a pending exception ...looking at the logic in getByName0
function, it would appear that it is possible
to release the name_utf reference before the createNetworkInterface call
and avoid any potential pending exception
regards
Mark
On 13/09/2017 04:16, vyom tewari wrote:
Hi Mark,
Thanks for doing this, i see that "createNetworkInterface" method is
getting called from multiple places in NetworkInterface.c there is
pending JNI Exception at line 695 in NetworkInterface.c. I am not sure
if it is safe to call "(*env)->ReleaseStringUTFChars" even if there is
pending JNI Exception.
Thanks,
Vyom
On Tuesday 12 September 2017 10:50 PM, Mark Sheppard wrote:
Hi,
please oblige and review the follows changes:
http://cr.openjdk.java.net/~msheppar/8023649/webrev/
for the issue:
https://bugs.openjdk.java.net/browse/JDK-8023649
This is performed under the auspices of reliability, robustness and
stability.
* As such, a number of error checks are amended to free malloc-ed
memory,
* to add consistency to the code, additional ExceptionCheck have been
added as a post SetObjectArrayElement invocation check,
* A long standing issue reporting that
NetworkInterface::getInterfacesAddresses can throw an NPE has been
addressed.
The context for such a failure is that there is an IPv4 only
configuration and that configuration is incorrect in its setting.
This may lead to the bindings array being allocated, but expected
InterfaceAddress objects not allocated
and set in the array .... so the bindings array implicitly contains
null references.
In NetworkInterface.c the function
createNetworkInterface
performs a check on an address mask which may lead to skipping the
code block handling the InterfaceAddress allocation.
regards
Mark