You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by re...@apache.org on 2010/09/14 09:49:24 UTC

svn commit: r996777 - /harmony/enhanced/java/branches/java6/classlib/modules/luni/src/main/native/luni/windows/helpers.c

Author: regisxu
Date: Tue Sep 14 07:49:24 2010
New Revision: 996777

URL: http://svn.apache.org/viewvc?rev=996777&view=rev
Log:
Apply patch for HARMONY-6646: [java][classlib][luni]Potential memory corruption while freeing the memory for NetworkInterface related functions

Modified:
    harmony/enhanced/java/branches/java6/classlib/modules/luni/src/main/native/luni/windows/helpers.c

Modified: harmony/enhanced/java/branches/java6/classlib/modules/luni/src/main/native/luni/windows/helpers.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/branches/java6/classlib/modules/luni/src/main/native/luni/windows/helpers.c?rev=996777&r1=996776&r2=996777&view=diff
==============================================================================
--- harmony/enhanced/java/branches/java6/classlib/modules/luni/src/main/native/luni/windows/helpers.c (original)
+++ harmony/enhanced/java/branches/java6/classlib/modules/luni/src/main/native/luni/windows/helpers.c Tue Sep 14 07:49:24 2010
@@ -714,6 +714,7 @@ jboolean
 getPlatformNetworkInterfaceAttribute(JNIEnv * env, FLAGTYPE type , jint jindex, DWORD flag)
 {
 	PIP_ADAPTER_ADDRESSES AdapterAddresses = NULL;
+	PIP_ADAPTER_ADDRESSES AdapterAddressesBuffer = NULL;
 	ULONG OutBufferLength = 0;
 	ULONG RetVal = 0;
 	jboolean isIPv6 = JNI_FALSE;
@@ -723,6 +724,8 @@ getPlatformNetworkInterfaceAttribute(JNI
 	PORT_ACCESS_FROM_ENV (env);
 
     AdapterAddresses = initAdapters(env, RetVal);
+	AdapterAddressesBuffer = AdapterAddresses;
+
 	isIPv6 = isIPv6Enabled (AdapterAddresses);
 	if (RetVal == NO_ERROR) {		
 		while (AdapterAddresses != NULL) {
@@ -754,8 +757,8 @@ getPlatformNetworkInterfaceAttribute(JNI
 		return 0;
 	}
 
-	if (AdapterAddresses != NULL) {
-		hymem_free_memory (AdapterAddresses);
+	if (AdapterAddressesBuffer != NULL) {
+		hymem_free_memory (AdapterAddressesBuffer);
 	}
 	return isSet;
 }
@@ -788,6 +791,7 @@ jint
 getPlatformMTU(JNIEnv * env, jstring ifname, jint index)
 {
 	PIP_ADAPTER_ADDRESSES AdapterAddresses = NULL;
+	PIP_ADAPTER_ADDRESSES AdapterAddressesBuffer = NULL;
 	ULONG OutBufferLength = 0;
 	ULONG RetVal = 0;
 	DWORD mtu = 0;
@@ -797,6 +801,8 @@ getPlatformMTU(JNIEnv * env, jstring ifn
 	PORT_ACCESS_FROM_ENV (env);
 
     AdapterAddresses = initAdapters(env, RetVal);
+	AdapterAddressesBuffer = AdapterAddresses;
+
 	isIPv6 = isIPv6Enabled (AdapterAddresses);
 
 	if (RetVal == NO_ERROR) {		
@@ -815,8 +821,8 @@ getPlatformMTU(JNIEnv * env, jstring ifn
 		return 0;
 	}
 
-	if (AdapterAddresses != NULL) {
-		hymem_free_memory (AdapterAddresses);
+	if (AdapterAddressesBuffer != NULL) {
+		hymem_free_memory (AdapterAddressesBuffer);
 	}
 	return mtu;
 }
@@ -825,6 +831,7 @@ jbyteArray 
 getPlatformHardwareAddress(JNIEnv * env, jstring ifname, jint index)
 {   
 	PIP_ADAPTER_ADDRESSES AdapterAddresses = NULL;
+	PIP_ADAPTER_ADDRESSES AdapterAddressesBuffer = NULL;
 	ULONG OutBufferLength = 0;
 	ULONG RetVal = 0; 
 	jboolean isIPv6 = JNI_FALSE;
@@ -834,6 +841,8 @@ getPlatformHardwareAddress(JNIEnv * env,
 	PORT_ACCESS_FROM_ENV (env);
 
 	AdapterAddresses = initAdapters(env, RetVal);
+	AdapterAddressesBuffer = AdapterAddresses;
+
 	isIPv6 = isIPv6Enabled(AdapterAddresses);
 
 	if (RetVal == NO_ERROR) {		
@@ -856,8 +865,8 @@ getPlatformHardwareAddress(JNIEnv * env,
 		return NULL;
 	}
 
-	if (AdapterAddresses != NULL) {
-		hymem_free_memory (AdapterAddresses);
+	if (AdapterAddressesBuffer != NULL) {
+		hymem_free_memory (AdapterAddressesBuffer);
 	}
 	return byteArray;
 }