diff mbox

Fix fnmatch strnlen namespace (bug 18470)

Message ID alpine.DEB.2.10.1506022135310.2704@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers June 2, 2015, 9:35 p.m. UTC
fnmatch brings in references to strnlen, which isn't in all the
standards that contain fnmatch (not added until the 2008 edition of
POSIX), resulting in linknamespace test failures.  (This is contrary
to glibc conventions, rather than a standards conformance issue,
because of the str* reservation.)  This patch fixes this in the usual
way, using __strnlen instead of strnlen.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).  The testing is on top
of <https://sourceware.org/ml/libc-alpha/2015-06/msg00019.html>
(pending review); the dependence is that both patches are needed for
most of the removals of XFAILs, rather than any other interaction
between the patches.

2015-06-02  Joseph Myers  <joseph@codesourcery.com>

	[BZ #18470]
	* posix/fnmatch.c (fnmatch) [_LIBC]: Call __strnlen instead of
	strnlen.
	* conform/Makefile (test-xfail-XPG3/fnmatch.h/linknamespace):
	Remove variable.
	(test-xfail-XPG4/fnmatch.h/linknamespace): Likewise.
	(test-xfail-POSIX/fnmatch.h/linknamespace): Likewise.
	(test-xfail-POSIX/glob.h/linknamespace): Likewise.
	(test-xfail-POSIX/wordexp.h/linknamespace): Likewise.
	(test-xfail-UNIX98/fnmatch.h/linknamespace): Likewise.
	(test-xfail-UNIX98/glob.h/linknamespace): Likewise.
	(test-xfail-UNIX98/wordexp.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/fnmatch.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/glob.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/wordexp.h/linknamespace): Likewise.

Comments

Ondřej Bílka June 2, 2015, 10:51 p.m. UTC | #1
On Tue, Jun 02, 2015 at 09:35:47PM +0000, Joseph Myers wrote:
> fnmatch brings in references to strnlen, which isn't in all the
> standards that contain fnmatch (not added until the 2008 edition of
> POSIX), resulting in linknamespace test failures.  (This is contrary
> to glibc conventions, rather than a standards conformance issue,
> because of the str* reservation.)  This patch fixes this in the usual
> way, using __strnlen instead of strnlen.
> 
> Tested for x86_64 and x86 (testsuite, and that installed stripped
> shared libraries are unchanged by the patch).  The testing is on top
> of <https://sourceware.org/ml/libc-alpha/2015-06/msg00019.html>
> (pending review); the dependence is that both patches are needed for
> most of the removals of XFAILs, rather than any other interaction
> between the patches.
> 
looks ok.
diff mbox

Patch

diff --git a/conform/Makefile b/conform/Makefile
index 27732f5..de009af 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -345,14 +345,12 @@  test-xfail-XOPEN2K/ndbm.h/linknamespace = yes
 test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes
 
 # Unsorted expected failures.
-test-xfail-XPG3/fnmatch.h/linknamespace = yes
 test-xfail-XPG3/glob.h/linknamespace = yes
 test-xfail-XPG3/regex.h/linknamespace = yes
 test-xfail-XPG3/stdio.h/linknamespace = yes
 test-xfail-XPG3/unistd.h/linknamespace = yes
 test-xfail-XPG3/wordexp.h/linknamespace = yes
 test-xfail-XPG4/fmtmsg.h/linknamespace = yes
-test-xfail-XPG4/fnmatch.h/linknamespace = yes
 test-xfail-XPG4/glob.h/linknamespace = yes
 test-xfail-XPG4/netdb.h/linknamespace = yes
 test-xfail-XPG4/regex.h/linknamespace = yes
@@ -362,16 +360,11 @@  test-xfail-XPG4/syslog.h/linknamespace = yes
 test-xfail-XPG4/unistd.h/linknamespace = yes
 test-xfail-XPG4/wordexp.h/linknamespace = yes
 test-xfail-POSIX/aio.h/linknamespace = yes
-test-xfail-POSIX/fnmatch.h/linknamespace = yes
-test-xfail-POSIX/glob.h/linknamespace = yes
 test-xfail-POSIX/mqueue.h/linknamespace = yes
 test-xfail-POSIX/regex.h/linknamespace = yes
 test-xfail-POSIX/semaphore.h/linknamespace = yes
 test-xfail-POSIX/unistd.h/linknamespace = yes
-test-xfail-POSIX/wordexp.h/linknamespace = yes
 test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
-test-xfail-UNIX98/fnmatch.h/linknamespace = yes
-test-xfail-UNIX98/glob.h/linknamespace = yes
 test-xfail-UNIX98/mqueue.h/linknamespace = yes
 test-xfail-UNIX98/netdb.h/linknamespace = yes
 test-xfail-UNIX98/stdio.h/linknamespace = yes
@@ -379,10 +372,7 @@  test-xfail-UNIX98/stdlib.h/linknamespace = yes
 test-xfail-UNIX98/syslog.h/linknamespace = yes
 test-xfail-UNIX98/unistd.h/linknamespace = yes
 test-xfail-UNIX98/wchar.h/linknamespace = yes
-test-xfail-UNIX98/wordexp.h/linknamespace = yes
 test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
-test-xfail-XOPEN2K/fnmatch.h/linknamespace = yes
-test-xfail-XOPEN2K/glob.h/linknamespace = yes
 test-xfail-XOPEN2K/netdb.h/linknamespace = yes
 test-xfail-XOPEN2K/signal.h/linknamespace = yes
 test-xfail-XOPEN2K/stdlib.h/linknamespace = yes
@@ -390,7 +380,6 @@  test-xfail-XOPEN2K/sys/wait.h/linknamespace = yes
 test-xfail-XOPEN2K/syslog.h/linknamespace = yes
 test-xfail-XOPEN2K/ucontext.h/linknamespace = yes
 test-xfail-XOPEN2K/unistd.h/linknamespace = yes
-test-xfail-XOPEN2K/wordexp.h/linknamespace = yes
 test-xfail-POSIX2008/grp.h/linknamespace = yes
 test-xfail-POSIX2008/netdb.h/linknamespace = yes
 test-xfail-POSIX2008/semaphore.h/linknamespace = yes
diff --git a/posix/fnmatch.c b/posix/fnmatch.c
index 760ccea..fd85efa 100644
--- a/posix/fnmatch.c
+++ b/posix/fnmatch.c
@@ -348,7 +348,7 @@  fnmatch (pattern, string, flags)
       memset (&ps, '\0', sizeof (ps));
       p = pattern;
 #ifdef _LIBC
-      n = strnlen (pattern, 1024);
+      n = __strnlen (pattern, 1024);
 #else
       n = strlen (pattern);
 #endif
@@ -392,7 +392,7 @@  fnmatch (pattern, string, flags)
 
       assert (mbsinit (&ps));
 #ifdef _LIBC
-      n = strnlen (string, 1024);
+      n = __strnlen (string, 1024);
 #else
       n = strlen (string);
 #endif