diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2011-07-20 13:54:13 +0400 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2012-10-15 13:09:14 +0300 |
commit | a6c8cc78aa8a7480519458c4f0aed648a3459599 (patch) | |
tree | 6df3b85ca0a53a4c4a454ff5dfeaa9d66655f90e | |
parent | a04355b53cabfb0db0529ffba02ae180479f38c0 (diff) | |
download | classpath-a6c8cc78aa8a7480519458c4f0aed648a3459599.tar.gz |
Handle malloc() failure in java_util_VMTimeZone.c file.
2011-07-20 Ivan Maidanski <ivmai@mail.ru>
* native/jni/java-util/java_util_VMTimeZone.c:
Include jcl.h file.
(Java_java_util_VMTimeZone_getSystemTimeZoneId): Throw
OutOfMemoryException in case of malloc() failure.
[ penberg@kernel.org: cleanups ]
Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | native/jni/java-util/java_util_VMTimeZone.c | 9 |
2 files changed, 15 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2011-07-20 Ivan Maidanski <ivmai@mail.ru> + + * native/jni/java-util/java_util_VMTimeZone.c: + Include jcl.h file. + (Java_java_util_VMTimeZone_getSystemTimeZoneId): Throw + OutOfMemoryException in case of malloc() failure. + 2012-06-10 Ivan Maidanski <ivmai@mail.ru> * compat/.gitignore, diff --git a/native/jni/java-util/java_util_VMTimeZone.c b/native/jni/java-util/java_util_VMTimeZone.c index a3a986d36..0830cbe8c 100644 --- a/native/jni/java-util/java_util_VMTimeZone.c +++ b/native/jni/java-util/java_util_VMTimeZone.c @@ -53,6 +53,7 @@ exception statement from your version. */ #include <stdlib.h> #include <jni.h> +#include <jcl.h> #include "java_util_VMTimeZone.h" @@ -169,7 +170,13 @@ Java_java_util_VMTimeZone_getSystemTimeZoneId (JNIEnv * env, tz1_len = strlen (tz1); tz2_len = strlen (tz2); tzoff_len = jint_to_charbuf (tzoff + 11, tzoffset); - tzid = (char *) malloc (tz1_len + tz2_len + tzoff_len + 1); /* FIXME alloc */ + tzid = (char *) malloc (tz1_len + tz2_len + tzoff_len + 1); + if (tzid == NULL) { + JCL_ThrowException (env, "java/lang/OutOfMemoryError", + "malloc() failed"); + return 0; + } + memcpy (tzid, tz1, tz1_len); memcpy (tzid + tz1_len, tzoff + 11 - tzoff_len, tzoff_len); memcpy (tzid + tz1_len + tzoff_len, tz2, tz2_len); |