This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-178-gc4eae75


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  c4eae75271734f820a7477dbce33f8752af6f003 (commit)
      from  01cad84e1996a6f20bf19609d0554c73f2ee33d5 (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://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c4eae75271734f820a7477dbce33f8752af6f003

commit c4eae75271734f820a7477dbce33f8752af6f003
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Nov 12 22:39:36 2014 +0000

    Fix __get_nprocs fgets_unlocked namespace (bug 17582).
    
    __get_nprocs is called from malloc code, but calls fgets_unlocked,
    which is not an ISO C or POSIX function.  This patch fixes it to call
    a new __fgets_unlocked name instead.
    
    Note: there are various other uses of fgets_unlocked in glibc's
    libraries, and I haven't yet investigated which others might also be
    problematic (called directly or indirectly from standard functions)
    and so need to change to use __fgets_unlocked.
    
    Tested for x86_64 (testsuite, and that disassembly of installed shared
    libraries is unchanged by the patch).
    
    	[BZ #17582]
    	* libio/iofgets.c [weak_alias && !_IO_MTSAFE_IO]
    	(__fgets_unlocked): Add alias of _IO_fgets.  Use libc_hidden_def.
    	* libio/iofgets_u.c (fgets_unlocked): Rename to __fgets_unlocked
    	and define as weak alias of __fgets_unlocked.  Use
    	libc_hidden_weak.
    	(__fgets_unlocked): Use libc_hidden_def.
    	* include/stdio.h (__fgets_unlocked): Declare.  Use
    	libc_hidden_proto.
    	* sysdeps/unix/sysv/linux/getsysstats.c (phys_pages_info): Use
    	__fgets_unlocked instead of fgets_unlocked.
    	* sysdeps/unix/sysv/linux/alpha/getsysstats.c
    	(GET_NPROCS_CONF_PARSER): Likewise.
    	* sysdeps/unix/sysv/linux/sparc/getsysstats.c
    	(GET_NPROCS_CONF_PARSER): Likewise.

diff --git a/ChangeLog b/ChangeLog
index 56fff4c..90ea96b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2014-11-12  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #17582]
+	* libio/iofgets.c [weak_alias && !_IO_MTSAFE_IO]
+	(__fgets_unlocked): Add alias of _IO_fgets.  Use libc_hidden_def.
+	* libio/iofgets_u.c (fgets_unlocked): Rename to __fgets_unlocked
+	and define as weak alias of __fgets_unlocked.  Use
+	libc_hidden_weak.
+	(__fgets_unlocked): Use libc_hidden_def.
+	* include/stdio.h (__fgets_unlocked): Declare.  Use
+	libc_hidden_proto.
+	* sysdeps/unix/sysv/linux/getsysstats.c (phys_pages_info): Use
+	__fgets_unlocked instead of fgets_unlocked.
+	* sysdeps/unix/sysv/linux/alpha/getsysstats.c
+	(GET_NPROCS_CONF_PARSER): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/getsysstats.c
+	(GET_NPROCS_CONF_PARSER): Likewise.
+
 	[BZ #17574]
 	* wcsmbs/wmemset.c (wmemset): Rename to __wmemset and define as
 	weak alias of __wmemset.  Use libc_hidden_weak.
diff --git a/NEWS b/NEWS
index 222696d..6ae72da 100644
--- a/NEWS
+++ b/NEWS
@@ -11,7 +11,7 @@ Version 2.21
 
   6652, 12926, 14132, 14138, 14171, 15215, 15884, 17266, 17344, 17363,
   17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508, 17522,
-  17555, 17570, 17571, 17572, 17573, 17574, 17583, 17584.
+  17555, 17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584.
 
 * New locales: tu_IN, bh_IN.
 
diff --git a/include/stdio.h b/include/stdio.h
index f6c0a77..1c54fc4 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -155,6 +155,8 @@ extern __typeof (fread_unlocked) __fread_unlocked;
 libc_hidden_proto (__fread_unlocked)
 libc_hidden_proto (fwrite_unlocked)
 libc_hidden_proto (fgets_unlocked)
+extern __typeof (fgets_unlocked) __fgets_unlocked;
+libc_hidden_proto (__fgets_unlocked)
 libc_hidden_proto (fputs_unlocked)
 libc_hidden_proto (fmemopen)
 libc_hidden_proto (open_memstream)
diff --git a/libio/iofgets.c b/libio/iofgets.c
index 1b708ca..e352d09 100644
--- a/libio/iofgets.c
+++ b/libio/iofgets.c
@@ -73,6 +73,8 @@ _IO_fgets (buf, n, fp)
 weak_alias (_IO_fgets, fgets)
 
 # ifndef _IO_MTSAFE_IO
+strong_alias (_IO_fgets, __fgets_unlocked)
+libc_hidden_def (__fgets_unlocked)
 weak_alias (_IO_fgets, fgets_unlocked)
 libc_hidden_weak (fgets_unlocked)
 # endif
diff --git a/libio/iofgets_u.c b/libio/iofgets_u.c
index b2d4d8f..d338ee0 100644
--- a/libio/iofgets_u.c
+++ b/libio/iofgets_u.c
@@ -28,7 +28,7 @@
 #include <stdio.h>
 
 char *
-fgets_unlocked (buf, n, fp)
+__fgets_unlocked (buf, n, fp)
      char *buf;
      int n;
      _IO_FILE *fp;
@@ -66,4 +66,6 @@ fgets_unlocked (buf, n, fp)
   fp->_IO_file_flags |= old_error;
   return result;
 }
-libc_hidden_def (fgets_unlocked)
+libc_hidden_def (__fgets_unlocked)
+weak_alias (__fgets_unlocked, fgets_unlocked)
+libc_hidden_weak (fgets_unlocked)
diff --git a/sysdeps/unix/sysv/linux/alpha/getsysstats.c b/sysdeps/unix/sysv/linux/alpha/getsysstats.c
index 0b39d89..bc4abfe 100644
--- a/sysdeps/unix/sysv/linux/alpha/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/alpha/getsysstats.c
@@ -47,7 +47,7 @@
 	 the kernel will not generate them.  8192 bytes are really enough. \
 	 If there is no "CPUs ..." line then we are on a UP system.  */	   \
       (RESULT) = 1;							   \
-      while (fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL)	   \
+      while (__fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL)   \
 	if ((sscanf (buffer, "cpus detected : %d", &(RESULT)) == 1)	   \
 	    || (sscanf (buffer, "CPUs probed %d", &(RESULT)) == 1))	   \
 	  break;							   \
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index 1746827..5b277e4 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -299,7 +299,7 @@ phys_pages_info (const char *format)
 	 string "processor".  We don't have to fear extremely long
 	 lines since the kernel will not generate them.  8192
 	 bytes are really enough.  */
-      while (fgets_unlocked (buffer, sizeof buffer, fp) != NULL)
+      while (__fgets_unlocked (buffer, sizeof buffer, fp) != NULL)
 	if (sscanf (buffer, format, &result) == 1)
 	  {
 	    result /= (__getpagesize () / 1024);
diff --git a/sysdeps/unix/sysv/linux/sparc/getsysstats.c b/sysdeps/unix/sysv/linux/sparc/getsysstats.c
index 8ec0a92..f28714c 100644
--- a/sysdeps/unix/sysv/linux/sparc/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/sparc/getsysstats.c
@@ -46,7 +46,7 @@
 	 probed cpus.  We don't have to fear extremely long lines since	 \
 	 the kernel will not generate them.  8192 bytes are really	 \
 	 enough.  */							 \
-      while (fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL)	 \
+      while (__fgets_unlocked ((BUFFER), sizeof (BUFFER), (FP)) != NULL) \
 	if (sscanf (buffer, "ncpus probed : %d", &(RESULT)) == 1)	 \
 	  break;							 \
     }									 \

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

Summary of changes:
 ChangeLog                                   |   16 ++++++++++++++++
 NEWS                                        |    2 +-
 include/stdio.h                             |    2 ++
 libio/iofgets.c                             |    2 ++
 libio/iofgets_u.c                           |    6 ++++--
 sysdeps/unix/sysv/linux/alpha/getsysstats.c |    2 +-
 sysdeps/unix/sysv/linux/getsysstats.c       |    2 +-
 sysdeps/unix/sysv/linux/sparc/getsysstats.c |    2 +-
 8 files changed, 28 insertions(+), 6 deletions(-)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]