summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2011-07-20 13:54:13 +0400
committerPekka Enberg <penberg@kernel.org>2012-10-15 13:09:14 +0300
commita6c8cc78aa8a7480519458c4f0aed648a3459599 (patch)
tree6df3b85ca0a53a4c4a454ff5dfeaa9d66655f90e
parenta04355b53cabfb0db0529ffba02ae180479f38c0 (diff)
downloadclasspath-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--ChangeLog7
-rw-r--r--native/jni/java-util/java_util_VMTimeZone.c9
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 18b6c033f..c0d84cdf0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);