[Mono-dev] Error in UnixGroupInfo
pablosantosluac at terra.es
Wed Jun 20 15:26:13 EDT 2007
I would rather skip the wrong user name, I guess this is the regular
behaviour on Unix systems
----- Original Message -----
From: "Rafael Teixeira" <monoman at gmail.com>
To: "Jonathan Pryor" <jonpryor at vt.edu>
Cc: "pablosantosluac" <pablosantosluac at terra.es>;
<mono-devel-list at lists.ximian.com>
Sent: Wednesday, June 20, 2007 3:11 PM
Subject: Re: [Mono-dev] Error in UnixGroupInfo
> Another variation to keep UnixUserInfo sealed, is to make the the
> class itself accept an invalid name or a -1 as the user id, and throw
> on any unknown property, except UserId (so sometimes the Name would
> also be available, which helps pinpoint the failures, didn't follow
> the GetMembers code to see if this would be the case).
> On 6/20/07, Rafael Teixeira <monoman at gmail.com> wrote:
>> An alternative is to return 'dummy' members for the missing ones in
>> GetMembers, aka
>> Fowler's Special Case pattern, from the PoEAA book.
>> For invalid users, return an instance of a subclass of
>> Mono.Unix.UnixUserInfo, that returns UserId as -1, or some other
>> invalid value. Also all other properties except Name would also have
>> neutral or invalid values, and methods would do/return nothing, for
>> this subclass.
>> Just my 2 cents,
>> On 6/20/07, Jonathan Pryor <jonpryor at vt.edu> wrote:
>> > On Wed, 2007-06-20 at 11:30 +0200, pablosantosluac wrote:
>> > > I have found an issue with Mono.Unix.UnixGroupInfo.GetMembers().
>> > >
>> > > This method is meant to return the UnixUserInfo for the members of
>> > > the given
>> > > unix group. The issue arises when a system has an unexistent username
>> > > defined in the group file.
>> > >
>> > > This is rather frequent, especially in a NIS environment (lazy
>> > > admins).
>> > > Normal unix behavior is to ignore the user and continue.
>> > > UnixGroupInfo.GetMembers() raises an 'invalid username' exception,
>> > > and there
>> > > is no way to retrieve the rest of the users in the group.
>> > >
>> > > Is it right to absorb the exception in this method and continue
>> > > resolving
>> > > other users?
>> > Good question. I imagine that it would be more user-friendly to eat
>> > the
>> > ArgumentException and return what it can, but it would then mean that
>> > the only way to know that there are invalid entries in the group file
>> > is
>> > to compare UnixUserInfo.GetMembers().Length to
>> > UnixUserInfo.GetMemberNames().Length.
>> > Then again, is knowing that the group file has an invalid entry a
>> > common
>> > scenario that should be documented?
>> > Opinions?
>> > Thanks,
>> > - Jon
>> > _______________________________________________
>> > Mono-devel-list mailing list
>> > Mono-devel-list at lists.ximian.com
>> > http://lists.ximian.com/mailman/listinfo/mono-devel-list
>> Rafael "Monoman" Teixeira
>> "The reasonable man adapts himself to the world; the unreasonable one
>> persists in trying to adapt the world to himself. Therefore all
>> progress depends on the unreasonable man." George Bernard Shaw
> Rafael "Monoman" Teixeira
> "The reasonable man adapts himself to the world; the unreasonable one
> persists in trying to adapt the world to himself. Therefore all
> progress depends on the unreasonable man." George Bernard Shaw
More information about the Mono-devel-list