The Java_java_lang_VMSystem_getenv native method may leak a memory when the "envname" is NULL and the JVM returns a new memory for GetStringUTFChars. The memory cell pointed by the "cname" is a JVM resource that must be deallocated by calling ReleaseStringUTFChars. ------------------------- JNIEXPORT jstring JNICALL Java_java_lang_VMSystem_getenv (JNIEnv * env, jclass klass __attribute__ ((__unused__)), jstring jname) { const char *cname; const char *envname; cname = JCL_jstring_to_cstring (env, jname); if (cname == NULL) return NULL; envname = getenv (cname); if (envname == NULL) return NULL; JCL_free_cstring (env, jname, cname); return (*env)->NewStringUTF (env, envname); } ------------------------- I propose the following patch of freeing the JVM resource as early as possible: Index: java_lang_VMSystem.c =================================================================== RCS file: /sources/classpath/classpath/native/jni/java-lang/java_lang_VMSystem.c,v retrieving revision 1.15 diff -r1.15 java_lang_VMSystem.c 151a152 > JCL_free_cstring (env, jname, cname); 155d155 < JCL_free_cstring (env, jname, cname);
decimal it