NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: toolchain/42181: pwcache compat broken in OS X
The following reply was made to PR toolchain/42181; it has been noted by GNATS.
From: Frank Zerangue <frank.zerangue%gmail.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: toolchain/42181: pwcache compat broken in OS X
Date: Wed, 14 Oct 2009 08:27:59 -0500
Please see toolchain/42014. I have a patch that fixes this.
Frank
On Oct 14, 2009, at 4:00 AM, jmmv%NetBSD.org@localhost wrote:
>> Number: 42181
>> Category: toolchain
>> Synopsis: pwcache compat broken in OS X
>> Confidential: no
>> Severity: serious
>> Priority: medium
>> Responsible: toolchain-manager
>> State: open
>> Class: sw-bug
>> Submitter-Id: net
>> Arrival-Date: Wed Oct 14 09:00:00 +0000 2009
>> Originator: Julio Merino
>> Release: NetBSD-current sources as of 2009/10/14
>> Organization:
>
>> Environment:
>
>
> System: Darwin calypso 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15
> 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
> Mac OS X Leopard 10.5.8.
> Architecture: i386
> Machine: i386
>> Description:
> Cross-compilation of NetBSD on a Mac OS X Leopard host fails because
> mtree does not correctly handle user and group name. mtree is
> messing
> up the NetBSD-specific user/group databases with the host ones.
>
> As an example, when mtree is run to populate destdir, the METALOG
> ends
> up containing an entry like the following:
>
> ./var/db/postfix type=dir uid=12 gname=everyone mode=0755
>
> uid should be postfix and gname should be postfix. However, these
> have
> been "corrupted" and point to 12 and everyone. uid is 12 because 12
> does not have any valid name in the local /etc/passwd. gname is
> everyone because /etc/group defines 12 as such.
>
> I don't know when this started happening. I seem to recall that I
> did
> previous builds on such a host before without problems, but I'm not
> sure.
>
> DIAGNOSIS
>
> Here comes my diagnosis of the problem, which may not be completely
> correct.
>
> OS X has native user_to_uid and group_to_gid functions, but lacks
> pwcache_groupdb and pwcache_userdb. When we build pwcache.c from
> tools/compat, we detect this situation.
>
> The problem is that we only do a "partial replacement" of the native
> pwcache. We provide our own pwcache_groupdb/userdb functions, but
> the
> original user_to_uid and group_to_gid functions remain in place.
>
> Later on, mtree is executed with -N to specify an alternative passwd
> database, and it calls our own pwcache_* functions to internally
> switch to the alternative database. Unfortunately, when the database
> is queried later on through user_to_uid and group_to_gid functions,
> we
> use the native functions which bypass our replacement.
>
> I assume this is not working correctly because __weak_alias is not
> defined in OS X, and thus the dynamic replacement of all the
> functions
> with our compat ones is not working.
>> How-To-Repeat:
> Cross-compile NetBSD-current on a Mac OS X Leopard host.
>> Fix:
> Don't know what the best way to resolve this is.
>
>> Unformatted:
>
>
Home |
Main Index |
Thread Index |
Old Index