about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-06-12 22:29:19 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-06-12 22:29:19 +0000
commitb400fdefc71ccc2a118ddfa78d3658d3ea3af7a2 (patch)
treea8f19ac208dab64cb6cd49cc5bfab5cc84681925
parent5371d99e8766f25864ddf20fb0866e57fc0b7991 (diff)
downloadglibc-b400fdefc71ccc2a118ddfa78d3658d3ea3af7a2.tar.gz
glibc-b400fdefc71ccc2a118ddfa78d3658d3ea3af7a2.tar.xz
glibc-b400fdefc71ccc2a118ddfa78d3658d3ea3af7a2.zip
Fix grp.h endgrent, getgrent namespace (bug 18528).
grp.h declares endgrent and getgrent if __USE_XOPEN2K8 (i.e. 2008
edition of POSIX, non-XSI).  However, the 2013 Technical Corrigendum
corrected the grp.h specification to XSI-shade these functions as in
previous editions (see <http://austingroupbugs.net/view.php?id=24>),
so they should not be declared for non-XSI POSIX.  This patch corrects
the conditions - using __USE_MISC || __USE_XOPEN_EXTENDED to match
setgrent - and the conform/ test expectations for this header, thereby
fixing the conform tests for this header for XPG3 (where the
expectations were wrong) and the linknamespace tests for it for
POSIX2008 (where the header bug meant it was wrongly considered a
problem for endgrent to bring in a reference to setgrent).

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	[BZ #18528]
	* grp/grp.h (endgrent): Condition on [__USE_MISC ||
	__USE_XOPEN_EXTENDED], not [__USE_XOPEN_EXTENDED ||
	__USE_XOPEN2K8].
	(getgrent): Likewise.
	* conform/data/grp.h-data [XPG3 || POSIX2008] (getgrent): Do not
	expect.
	[XPG3 || POSIX2008] (endgrent): Likewise.
	[XPG3] (setgrent): Likewise.
	* conform/Makefile (test-xfail-XPG3/grp.h/conform): Remove
	variable.
	(test-xfail-POSIX2008/grp.h/linknamespace): Likewise.
-rw-r--r--ChangeLog13
-rw-r--r--NEWS2
-rw-r--r--conform/Makefile2
-rw-r--r--conform/data/grp.h-data4
-rw-r--r--grp/grp.h2
5 files changed, 15 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 9403f2883c..fa596163b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2015-06-12  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #18528]
+	* grp/grp.h (endgrent): Condition on [__USE_MISC ||
+	__USE_XOPEN_EXTENDED], not [__USE_XOPEN_EXTENDED ||
+	__USE_XOPEN2K8].
+	(getgrent): Likewise.
+	* conform/data/grp.h-data [XPG3 || POSIX2008] (getgrent): Do not
+	expect.
+	[XPG3 || POSIX2008] (endgrent): Likewise.
+	[XPG3] (setgrent): Likewise.
+	* conform/Makefile (test-xfail-XPG3/grp.h/conform): Remove
+	variable.
+	(test-xfail-POSIX2008/grp.h/linknamespace): Likewise.
+
 	[BZ #18527]
 	* login/getlogin_r.c (getlogin_r): Rename to __getlogin_r and
 	define as weak alias of __getlogin_r.  Use libc_hidden_weak.
diff --git a/NEWS b/NEWS
index b9b4ce2a3c..75bddc1134 100644
--- a/NEWS
+++ b/NEWS
@@ -21,7 +21,7 @@ Version 2.22
   18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
   18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
   18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507,
-  18512, 18519, 18520, 18522, 18527.
+  18512, 18519, 18520, 18522, 18527, 18528.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
diff --git a/conform/Makefile b/conform/Makefile
index 57dbc9225e..ea7a6b4b33 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -170,7 +170,6 @@ test-xfail-XOPEN2K8/ndbm.h/conform = yes
 # Unsorted expected failures.
 test-xfail-XPG3/fcntl.h/conform = yes
 test-xfail-XPG3/ftw.h/conform = yes
-test-xfail-XPG3/grp.h/conform = yes
 test-xfail-XPG3/langinfo.h/conform = yes
 test-xfail-XPG3/limits.h/conform = yes
 test-xfail-XPG3/pwd.h/conform = yes
@@ -361,7 +360,6 @@ test-xfail-UNIX98/wchar.h/linknamespace = yes
 test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
 test-xfail-XOPEN2K/netdb.h/linknamespace = yes
 test-xfail-XOPEN2K/syslog.h/linknamespace = yes
-test-xfail-POSIX2008/grp.h/linknamespace = yes
 test-xfail-POSIX2008/netdb.h/linknamespace = yes
 test-xfail-POSIX2008/semaphore.h/linknamespace = yes
 test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
diff --git a/conform/data/grp.h-data b/conform/data/grp.h-data
index 1edba738bb..53e880d418 100644
--- a/conform/data/grp.h-data
+++ b/conform/data/grp.h-data
@@ -19,12 +19,10 @@ function {struct group*} getgrgid (gid_t)
 function {struct group*} getgrnam (const char*)
 function int getgrgid_r (gid_t, struct group*, char *, size_t, struct group**)
 function int getgrnam_r (const char *, struct group *, char *, size_t, struct group**)
-# ifndef POSIX
+# if !defined XPG3 && !defined POSIX && !defined POSIX2008
 function {struct group*} getgrent (void)
 function void endgrent (void)
-#  ifndef POSIX2008
 function void setgrent (void)
-#  endif
 # endif
 
 allow gr_*
diff --git a/grp/grp.h b/grp/grp.h
index c593eb5e9b..ff0ad02665 100644
--- a/grp/grp.h
+++ b/grp/grp.h
@@ -60,9 +60,7 @@ struct group
    This function is a possible cancellation point and therefore not
    marked with __THROW.  */
 extern void setgrent (void);
-#endif
 
-#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
 /* Close the group-file stream.
 
    This function is a possible cancellation point and therefore not