You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2008/03/18 13:00:19 UTC

svn commit: r638337 - /harmony/enhanced/jdktools/trunk/modules/jpda/src/main/native/jdwp/windows/transport/dt_shmem/SharedMemTransport.cpp

Author: odeakin
Date: Tue Mar 18 05:00:17 2008
New Revision: 638337

URL: http://svn.apache.org/viewvc?rev=638337&view=rev
Log:
Add checks for NULL returns from memory allocation.

Modified:
    harmony/enhanced/jdktools/trunk/modules/jpda/src/main/native/jdwp/windows/transport/dt_shmem/SharedMemTransport.cpp

Modified: harmony/enhanced/jdktools/trunk/modules/jpda/src/main/native/jdwp/windows/transport/dt_shmem/SharedMemTransport.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/jpda/src/main/native/jdwp/windows/transport/dt_shmem/SharedMemTransport.cpp?rev=638337&r1=638336&r2=638337&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/jpda/src/main/native/jdwp/windows/transport/dt_shmem/SharedMemTransport.cpp (original)
+++ harmony/enhanced/jdktools/trunk/modules/jpda/src/main/native/jdwp/windows/transport/dt_shmem/SharedMemTransport.cpp Tue Mar 18 05:00:17 2008
@@ -169,9 +169,17 @@
 
     /* Create the shared memory transport */
     sharedMemTransport *transport = (sharedMemTransport*)(((internalEnv*)env->functions->reserved1)->alloc)(sizeof(sharedMemTransport));
+    if (NULL == transport) {
+        SetLastTranError(env, "Could not allocate transport structure", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
 
     /* We have successfully got our shared memory address and handle - record them for future use */
     *actualAddress = (char*)(((internalEnv*)env->functions->reserved1)->alloc)(strlen(writeAddress));
+    if (NULL == actualAddress) {
+        SetLastTranError(env, "Could not allocate address string", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
     strcpy(*actualAddress, writeAddress);
     strcpy(transport->name, writeAddress);
     transport->sharedMemoryHandle = writeHandle;
@@ -188,11 +196,20 @@
     /* TODO: Make sure all the handles created and stored here are closed later! */
     char *defaultMutexSuffix = DEFAULT_MUTEX_SUFFIX;
     char *writeMutexName = (char*)(((internalEnv*)env->functions->reserved1)->alloc)(strlen(writeAddress) + strlen(defaultMutexSuffix) + 1);
+    if (NULL == writeMutexName) {
+        SetLastTranError(env, "Could not allocate mutex name", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
+
     sprintf(writeMutexName, "%s%s", writeAddress, defaultMutexSuffix);
 
     /* Create accept event */
     char *defaultAcceptEventSuffix = DEFAULT_ACCEPT_EVENT_SUFFIX;
     char *acceptEventName = (char*)(((internalEnv*)env->functions->reserved1)->alloc)(strlen(writeAddress) + strlen(defaultAcceptEventSuffix) + 1);
+    if (NULL == acceptEventName) {
+        SetLastTranError(env, "Could not allocate accept event name", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
     sprintf(acceptEventName, "%s%s", writeAddress, defaultAcceptEventSuffix);
 
     HANDLE acceptEventHandle = CreateEvent(NULL, FALSE, FALSE, acceptEventName);
@@ -207,6 +224,10 @@
     /* Create attach event */
     char *defaultAttachEventSuffix = DEFAULT_ATTACH_EVENT_SUFFIX;
     char *attachEventName = (char*)(((internalEnv*)env->functions->reserved1)->alloc)(strlen(writeAddress) + strlen(defaultAttachEventSuffix) + 1);
+    if (NULL == attachEventName) {
+        SetLastTranError(env, "Could not allocate attach event name", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
     sprintf(attachEventName, "%s%s", writeAddress, defaultAttachEventSuffix);
 
     HANDLE attachEventHandle = CreateEvent(NULL, FALSE, FALSE, attachEventName);
@@ -220,6 +241,10 @@
 
     /* Allocate the transport listener and fill in it's fields */
     sharedMemListener *listener = (sharedMemListener*)(((internalEnv*)env->functions->reserved1)->alloc)(sizeof(sharedMemListener));
+    if (NULL == listener) {
+        SetLastTranError(env, "Could not allocate listener structure", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
     strcpy(listener->mutexName, writeMutexName);
     strcpy(listener->acceptEventName, acceptEventName);
     strcpy(listener->attachEventName, attachEventName);
@@ -365,11 +390,19 @@
 
     /* Allocate the shared memory transport structure */
     sharedMemTransport *transport = (sharedMemTransport*)(((internalEnv*)env->functions->reserved1)->alloc)(sizeof(sharedMemTransport));
+    if (NULL == transport) {
+        SetLastTranError(env, "Could not allocate transport structure", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
     ((internalEnv*)env->functions->reserved1)->transport = transport;
     strcpy(transport->name, address);
     
     /* Read the sharedMemListener from shared memory */
     sharedMemListener* listener = (sharedMemListener*)(((internalEnv*)env->functions->reserved1)->alloc)(sizeof(sharedMemListener));
+    if (NULL == listener) {
+        SetLastTranError(env, "Could not allocate listener structure", 0);
+        return JDWPTRANSPORT_ERROR_OUT_OF_MEMORY;
+    }
     CopyMemory(listener, readRegion, sizeof(sharedMemListener));
     ((internalEnv*)env->functions->reserved1)->transport->listener = listener;
     char *mutexName = (char*)listener->mutexName;
@@ -560,7 +593,7 @@
     }
 
     internalEnv* iEnv = (internalEnv*)callback->alloc(sizeof(internalEnv));
-    if (iEnv == 0) {
+    if (NULL == iEnv) {
         return JNI_ENOMEM;
     }
     iEnv->jvm = vm;
@@ -570,7 +603,7 @@
     iEnv->lastError = NULL;
 
     jdwpTransportNativeInterface_* envTNI = (jdwpTransportNativeInterface_*)callback->alloc(sizeof(jdwpTransportNativeInterface_));
-    if (0 == envTNI) {
+    if (NULL == envTNI) {
         callback->free(iEnv);
         return JNI_ENOMEM;
     }
@@ -588,7 +621,7 @@
     envTNI->reserved1 = iEnv;
 
     _jdwpTransportEnv* resEnv = (_jdwpTransportEnv*)callback->alloc(sizeof(_jdwpTransportEnv));
-    if (0 == resEnv) {
+    if (NULL == resEnv) {
         callback->free(iEnv);
         callback->free(envTNI);
         return JNI_ENOMEM;