summaryrefslogtreecommitdiff
path: root/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch')
-rw-r--r--recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch79
1 files changed, 79 insertions, 0 deletions
diff --git a/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch b/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch
new file mode 100644
index 0000000000..6bf7a7310f
--- /dev/null
+++ b/recipes/gcc/gcc-4.3.4/debian/libjava-realloc-leak.dpatch
@@ -0,0 +1,79 @@
+#! /bin/sh -e
+
+# DP: Don't leak upon failed realloc (taken from the trunk).
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+ pdir="-d $3"
+ dir="$3/"
+elif [ $# -ne 1 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch)
+ patch $pdir -f --no-backup-if-mismatch -p0 < $0
+ ;;
+ -unpatch)
+ patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+ ;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+libjava/
+
+2008-03-10 Jim Meyering <meyering@redhat.com>
+
+ Don't leak upon failed realloc.
+ * gnu/classpath/natSystemProperties.cc
+ (SystemProperties::insertSystemProperties):
+
+libjava/classpath/
+
+2008-03-10 Jim Meyering <meyering@redhat.com>
+
+ Don't leak upon failed realloc.
+ * native/jni/classpath/jcl.c (JCL_realloc): Upon failed realloc,
+ free the original buffer before throwing the exception.
+
+Index: libjava/classpath/native/jni/classpath/jcl.c
+===================================================================
+--- libjava/classpath/native/jni/classpath/jcl.c (revision 133093)
++++ libjava/classpath/native/jni/classpath/jcl.c (revision 133094)
+@@ -1,5 +1,5 @@
+ /* jcl.c
+- Copyright (C) 1998, 2005, 2006 Free Software Foundation, Inc.
++ Copyright (C) 1998, 2005, 2006, 2008 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+@@ -152,9 +152,11 @@
+ JNIEXPORT void *JNICALL
+ JCL_realloc (JNIEnv * env, void *ptr, size_t size)
+ {
++ void *orig_ptr = ptr;
+ ptr = realloc (ptr, size);
+ if (ptr == 0)
+ {
++ free (orig_ptr);
+ JCL_ThrowException (env, "java/lang/OutOfMemoryError",
+ "malloc() failed.");
+ return NULL;
+Index: libjava/gnu/classpath/natSystemProperties.cc
+===================================================================
+--- libjava/gnu/classpath/natSystemProperties.cc (revision 133093)
++++ libjava/gnu/classpath/natSystemProperties.cc (revision 133094)
+@@ -270,7 +270,10 @@
+ if (errno != ERANGE)
+ break;
+ buflen = 2 * buflen;
++ char *orig_buf = buffer;
+ buffer = (char *) realloc (buffer, buflen);
++ if (buffer == NULL)
++ free (orig_buf);
+ }
+ if (buffer != NULL)
+ free (buffer);