NetBSD Problem Report #42201
From nakayosh@leto.eonet.ne.jp Mon Oct 19 17:14:13 2009
Return-Path: <nakayosh@leto.eonet.ne.jp>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
by www.NetBSD.org (Postfix) with ESMTP id 3E97663B902
for <gnats-bugs@gnats.NetBSD.org>; Mon, 19 Oct 2009 17:14:13 +0000 (UTC)
Message-Id: <20091019151217.13AA91B7278@ae0000-mailauth12.eo.k-opti.ad.jp>
Date: Tue, 20 Oct 2009 00:12:17 +0900 (JST)
From: nakayosh@leto.eonet.ne.jp
Reply-To: nakayosh@leto.eonet.ne.jp
To: gnats-bugs@gnats.NetBSD.org
Subject: fts(3): broken compatibility
X-Send-Pr-Version: 3.95
>Number: 42201
>Category: lib
>Synopsis: fts(3): broken compatibility
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: lib-bug-people
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Oct 19 17:15:00 +0000 2009
>Closed-Date: Tue Oct 20 11:10:32 +0000 2009
>Last-Modified: Tue Oct 20 11:10:32 +0000 2009
>Originator: NAKAJIMA Yoshihiro
>Release: NetBSD-current/20091016
>Organization:
>Environment:
System: NetBSD asura 5.99.20 NetBSD 5.99.20 (ASURA) #9: Sat Oct 17 00:52:50 JST 2009 nakayosh@asura:/usr/src/sys/arch/amd64/compile/ASURA amd64
Architecture: x86_64
Machine: amd64
>Description:
fts(3)'s compatibility is broken.
>How-To-Repeat:
Prepare old ls(1) and new libc.so.
% cd /tmp
% env LD_PRELOAD=/tmp/netbsd-current/lib/libc.so.12.171 netbsd-5.0.1/bin/ls -l
Segmentation fault (core dumped)
>Fix:
Date: Tue Oct 20 00:05:14 JST 2009
diff -u src/lib/libc/compat/gen/compat_fts.c.ORIG src/lib/libc/compat/gen/compat_fts.c
--- src/lib/libc/compat/gen/compat_fts.c.ORIG 2009-01-11 11:46:25.000000000 +0900
+++ src/lib/libc/compat/gen/compat_fts.c 2009-10-19 23:30:18.000000000 +0900
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_fts.c,v 1.3 2009/01/11 02:46:25 christos Exp $ */
+/* $NetBSD$ */
/*
* Written by Jason R. Thorpe <thorpej@NetBSD.org>, October 21, 1997.
@@ -17,6 +17,10 @@
#define __fts_stat_t struct stat12
#define __fts_nlink_t u_int16_t
#define __fts_ino_t u_int32_t
+#define __fts_length_t unsigned short
+#define __fts_number_t long
+#define __fts_dev_t uint32_t
+#define __fts_level_t short
#include <fts.h>
#include <compat/include/fts.h>
@@ -46,5 +50,7 @@
" include <fts.h> for correct reference")
#define __FTS_COMPAT_TAILINGSLASH
+#define __FTS_COMPAT_LENGTH
+#define __FTS_COMPAT_LEVEL
#include "gen/fts.c"
diff -u src/lib/libc/compat/gen/compat___fts13.c.ORIG src/lib/libc/compat/gen/compat___fts13.c
--- src/lib/libc/compat/gen/compat___fts13.c.ORIG 2009-01-11 11:46:24.000000000 +0900
+++ src/lib/libc/compat/gen/compat___fts13.c 2009-10-19 23:30:33.000000000 +0900
@@ -1,4 +1,4 @@
-/* $NetBSD: compat___fts13.c,v 1.5 2009/01/11 02:46:24 christos Exp $ */
+/* $NetBSD$ */
#include "namespace.h"
#include <sys/cdefs.h>
@@ -27,10 +27,11 @@
#include <compat/sys/stat.h>
#define __fts_stat_t struct stat13
-#define __fts_nlink_t nlink_t
#define __fts_ino_t u_int32_t
#define __fts_length_t u_short
#define __fts_number_t long
+#define __fts_dev_t uint32_t
+#define __fts_level_t short
#define stat __stat13
#define lstat __lstat13
@@ -52,5 +53,6 @@
#define __FTS_COMPAT_TAILINGSLASH
#define __FTS_COMPAT_LENGTH
+#define __FTS_COMPAT_LEVEL
#include "gen/fts.c"
diff -u src/lib/libc/compat/gen/compat___fts30.c.ORIG src/lib/libc/compat/gen/compat___fts30.c
--- src/lib/libc/compat/gen/compat___fts30.c.ORIG 2006-07-28 00:46:30.000000000 +0900
+++ src/lib/libc/compat/gen/compat___fts30.c 2009-10-19 23:30:42.000000000 +0900
@@ -1,9 +1,11 @@
-/* $NetBSD: compat___fts30.c,v 1.2 2006/07/27 15:46:30 christos Exp $ */
+/* $NetBSD$ */
#include "namespace.h"
#include <sys/cdefs.h>
#include <dirent.h>
+#define __LIBC12_SOURCE__
+
__warn_references(__fts_children30,
"warning: reference to compatibility __fts_children30();"
" include <fts.h> for correct reference")
@@ -21,9 +23,18 @@
" include <fts.h> for correct reference")
#include <sys/stat.h>
+#include <compat/sys/time.h>
+#include <compat/sys/stat.h>
+#define __fts_stat_t struct stat30
#define __fts_length_t u_short
#define __fts_number_t long
+#define __fts_dev_t uint32_t
+#define __fts_level_t short
+
+#define stat __stat30
+#define lstat __lstat30
+#define fstat __fstat30
#undef fts_children
#define fts_children __fts_children30
@@ -36,10 +47,10 @@
#undef fts_set
#define fts_set __fts_set30
-#define __LIBC12_SOURCE__
#include <fts.h>
#include <compat/include/fts.h>
#define __FTS_COMPAT_LENGTH
+#define __FTS_COMPAT_LEVEL
#include "gen/fts.c"
diff -u src/lib/libc/compat/gen/compat___fts31.c.ORIG src/lib/libc/compat/gen/compat___fts31.c
--- src/lib/libc/compat/gen/compat___fts31.c.ORIG 2006-07-28 00:46:30.000000000 +0900
+++ src/lib/libc/compat/gen/compat___fts31.c 2009-10-19 23:30:52.000000000 +0900
@@ -1,9 +1,11 @@
-/* $NetBSD: compat___fts31.c,v 1.1 2006/07/27 15:46:30 christos Exp $ */
+/* $NetBSD$ */
#include "namespace.h"
#include <sys/cdefs.h>
#include <dirent.h>
+#define __LIBC12_SOURCE__
+
__warn_references(__fts_children31,
"warning: reference to compatibility __fts_children31();"
" include <fts.h> for correct reference")
@@ -21,8 +23,17 @@
" include <fts.h> for correct reference")
#include <sys/stat.h>
+#include <compat/sys/time.h>
+#include <compat/sys/stat.h>
+#define __fts_stat_t struct stat30
#define __fts_number_t long
+#define __fts_dev_t uint32_t
+#define __fts_level_t short
+
+#define stat __stat30
+#define lstat __lstat30
+#define fstat __fstat30
#undef fts_children
#define fts_children __fts_children31
@@ -35,10 +46,9 @@
#undef fts_set
#define fts_set __fts_set31
-#define __LIBC12_SOURCE__
#include <fts.h>
#include <compat/include/fts.h>
-#define __FTS_COMPAT_LENGTH
+#define __FTS_COMPAT_LEVEL
#include "gen/fts.c"
diff -u src/lib/libc/compat/gen/compat___fts32.c.ORIG src/lib/libc/compat/gen/compat___fts32.c
--- src/lib/libc/compat/gen/compat___fts32.c.ORIG 2009-01-11 11:46:25.000000000 +0900
+++ src/lib/libc/compat/gen/compat___fts32.c 2009-10-19 23:31:03.000000000 +0900
@@ -1,4 +1,4 @@
-/* $NetBSD: compat___fts32.c,v 1.2 2009/01/11 02:46:25 christos Exp $ */
+/* $NetBSD$ */
#include "namespace.h"
#include <sys/cdefs.h>
@@ -23,6 +23,8 @@
#define __fts_stat_t struct stat30
#define __fts_dev_t uint32_t
+#define __fts_level_t short
+
#undef fts_children
#define fts_children __fts_children32
#undef fts_close
@@ -42,7 +44,7 @@
#include <fts.h>
#include <compat/include/fts.h>
-#define __FTS_COMPAT_LENGTH
+#define __FTS_COMPAT_LEVEL
#define stat __stat30
#define lstat __lstat30
>Release-Note:
>Audit-Trail:
From: Christos Zoulas <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42201 CVS commit: src/lib/libc/compat/gen
Date: Mon, 19 Oct 2009 13:52:05 -0400
Module Name: src
Committed By: christos
Date: Mon Oct 19 17:52:05 UTC 2009
Modified Files:
src/lib/libc/compat/gen: compat___fts13.c compat___fts30.c
compat___fts31.c compat___fts32.c compat___fts50.c compat_fts.c
Log Message:
PR/42201: NAKAJIMA Yoshihiro: fts(3): broken compatibility
As new field types were added, we did not provide overrides for older compat
versions. This restores compatibility.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/lib/libc/compat/gen/compat___fts13.c
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/compat/gen/compat___fts30.c \
src/lib/libc/compat/gen/compat___fts32.c
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/compat/gen/compat___fts31.c \
src/lib/libc/compat/gen/compat___fts50.c
cvs rdiff -u -r1.3 -r1.4 src/lib/libc/compat/gen/compat_fts.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->feedback
State-Changed-By: wiz@NetBSD.org
State-Changed-When: Mon, 19 Oct 2009 21:15:13 +0000
State-Changed-Why:
christos committed -- ok to close?
From: NAKAJIMA Yoshihiro <nakayosh@leto.eonet.ne.jp>
To: gnats-bugs@NetBSD.org, wiz@NetBSD.org
Cc: lib-bug-people@netbsd.org, netbsd-bugs@netbsd.org,
gnats-admin@netbsd.org
Subject: Re: lib/42201 (fts(3): broken compatibility)
Date: Tue, 20 Oct 2009 20:06:20 +0900 (JST)
On Mon, 19 Oct 2009 21:15:14 +0000 (UTC),
wiz@NetBSD.org wrote:
> Synopsis: fts(3): broken compatibility
>
> State-Changed-From-To: open->feedback
> State-Changed-By: wiz@NetBSD.org
> State-Changed-When: Mon, 19 Oct 2009 21:15:13 +0000
> State-Changed-Why:
> christos committed -- ok to close?
It seems fine. Close please.
--
nakayosh
State-Changed-From-To: feedback->closed
State-Changed-By: wiz@NetBSD.org
State-Changed-When: Tue, 20 Oct 2009 11:10:32 +0000
State-Changed-Why:
Confirmed fixed, thanks!
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.