diff options
Diffstat (limited to 'meta/packages/gcc/gcc-4.3.1/debian/libjava-realloc-leak.dpatch')
-rw-r--r-- | meta/packages/gcc/gcc-4.3.1/debian/libjava-realloc-leak.dpatch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/meta/packages/gcc/gcc-4.3.1/debian/libjava-realloc-leak.dpatch b/meta/packages/gcc/gcc-4.3.1/debian/libjava-realloc-leak.dpatch new file mode 100644 index 0000000000..6bf7a7310f --- /dev/null +++ b/meta/packages/gcc/gcc-4.3.1/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); |