GNU C Library master sources branch, master, updated. glibc-2.12-216-g3540d66

drepper@sourceware.org drepper@sourceware.org
Fri Nov 12 08:51:00 GMT 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3540d66b669af54900b2e4bfc0ab82960e84a471 (commit)
      from  13b695749acf88139a2ce1ed2c949e0e64300a9b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3540d66b669af54900b2e4bfc0ab82960e84a471

commit 3540d66b669af54900b2e4bfc0ab82960e84a471
Author: Andreas Schwab <schwab@redhat.com>
Date:   Fri Nov 12 03:51:28 2010 -0500

    Fix memory leak in fnmatch

diff --git a/ChangeLog b/ChangeLog
index 5a7d9d2..7fc8af2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2010-11-11  Andreas Schwab  <schwab@redhat.com>
+
+	* posix/fnmatch_loop.c (NEW_PATTERN): Fix use of alloca.
+	* posix/Makefile (tests): Add $(objpfx)tst-fnmatch-mem.
+	(tst-fnmatch-ENV): Set MALLOC_TRACE.
+	($(objpfx)tst-fnmatch-mem): New rule.
+	(generated): Add tst-fnmatch-mem and tst-fnmatch.mtrace.
+	* posix/tst-fnmatch.c (main): Call mtrace.
+
 2010-11-11  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
diff --git a/posix/Makefile b/posix/Makefile
index 356896f..373e50b 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -115,7 +115,8 @@ generated := $(addprefix wordexp-test-result, 1 2 3 4 5 6 7 8 9 10) \
 	     tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
 	     tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
 	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
-	     tst-vfork3-mem tst-vfork3.mtrace getconf.speclist
+	     tst-vfork3-mem tst-vfork3.mtrace getconf.speclist \
+	     tst-fnmatch-mem tst-fnmatch.mtrace
 
 include ../Rules
 
@@ -235,7 +236,7 @@ ifeq (no,$(cross-compiling))
 tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
   $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem $(objpfx)tst-rxspencer-mem\
   $(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
-  $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem
+  $(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem $(objpfx)tst-fnmatch-mem
 xtests: $(objpfx)bug-ga2-mem
 endif
 
@@ -247,6 +248,11 @@ annexc-CFLAGS = -O
 $(objpfx)annexc: annexc.c
 	$(native-compile)
 
+tst-fnmatch-ENV += MALLOC_TRACE=$(objpfx)tst-fnmatch.mtrace
+
+$(objpfx)tst-fnmatch-mem: $(objpfx)tst-fnmatch.out
+	$(common-objpfx)malloc/mtrace $(objpfx)tst-fnmatch.mtrace > $@
+
 bug-regex2-ENV = MALLOC_TRACE=$(objpfx)bug-regex2.mtrace
 
 $(objpfx)bug-regex2-mem: $(objpfx)bug-regex2.out
diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
index c8e52a6..6b0224e 100644
--- a/posix/fnmatch_loop.c
+++ b/posix/fnmatch_loop.c
@@ -1114,18 +1114,16 @@ EXT (INT opt, const CHAR *pattern, const CHAR *string, const CHAR *string_end,
 	    int malloced = ! __libc_use_alloca (alloca_used + slen);	      \
 	    if (__builtin_expect (malloced, 0))				      \
 	      {								      \
-		newp = alloca_account (slen, alloca_used);		      \
-		any_malloced = 1;					      \
-	      }								      \
-	    else							      \
-	      {								      \
 		newp = malloc (slen);					      \
 		if (newp == NULL)					      \
 		  {							      \
 		    retval = -2;					      \
 		    goto out;						      \
 		  }							      \
+		any_malloced = 1;					      \
 	      }								      \
+	    else							      \
+	      newp = alloca_account (slen, alloca_used);		      \
 	    newp->next = NULL;						      \
 	    newp->malloced = malloced;					      \
 	    *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0');    \
diff --git a/posix/tst-fnmatch.c b/posix/tst-fnmatch.c
index 25471f8..7e1f73a 100644
--- a/posix/tst-fnmatch.c
+++ b/posix/tst-fnmatch.c
@@ -1,5 +1,5 @@
 /* Tests for fnmatch function.
-   Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/types.h>
+#include <mcheck.h>
 
 
 static char *next_input (char **line, int first, int last);
@@ -46,6 +47,8 @@ main (void)
   size_t escpatternlen = 0;
   int nr = 0;
 
+  mtrace ();
+
   /* Read lines from stdin with the following format:
 
        locale  input-string  match-string  flags  result

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog            |    9 +++++++++
 posix/Makefile       |   10 ++++++++--
 posix/fnmatch_loop.c |    8 +++-----
 posix/tst-fnmatch.c  |    5 ++++-
 4 files changed, 24 insertions(+), 8 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources



More information about the Glibc-cvs mailing list