getpwent bug?

Dan Nelson dnelson at allantgroup.com
Thu Jul 15 17:26:20 UTC 2010


In the last episode (Jul 15), Jens Rehsack said:
> Hi all,
> 
> I detected an issue with getpwent on my FreeBSD test box:
> 
> perl -MData::Dumper -e 'my @e = getpwent(); print Dumper(\@e); endpwent(); @e = getpwent(); print Dumper(\@e); endpwent(); @e = getpwent(); print Dumper(\@e); endpwent();'
> $VAR1 = [ 'root', '', 0, 0, 0, '', 'Charlie &', '/root', '/bin/csh', 0 ];
> $VAR1 = [ 'toor', '*', 0, 0, 0, '', 'Bourne-again Superuser', '/root', '', 0 ];
> $VAR1 = [ 'daemon', '*', 1, 1, 0, '', 'Owner of many system processes', '/root', '/usr/sbin/nologin', 0 ];
>
> I'm using FreeBSD waldorf.muppets.liwing.de 7.3-PRERELEASE FreeBSD 7.3-PRERELEASE #0: Fri Mar 12 11:31:18 UTC 2010 root at waldorf.muppets.liwing.de:/usr/obj/usr/src/sys/WALDORF  amd64

The above output looks perfect, and should match the top three lines in your
/etc/passwd files.
 
> The correct output should be (taken from a NetBSD system):
> perl -MData::Dumper -e 'my @e = getpwent(); print Dumper(\@e); endpwent(); @e = getpwent(); print Dumper(\@e); endpwent(); @e = getpwent(); print Dumper(\@e); endpwent();'
> $VAR1 = [ 'root', '*', 0, 0, 0, '', 'Charlie &', '/root', '/bin/ksh', 0 ];
> $VAR1 = [ 'root', '*', 0, 0, 0, '', 'Charlie &', '/root', '/bin/ksh', 0 ];
> $VAR1 = [ 'root', '*', 0, 0, 0, '', 'Charlie &', '/root', '/bin/ksh', 0 ];

This output looks wrong, unless NetBSD has three identical root lines at the
top of its passwd file.
 
> Taking a look to
> http://www.cpantesters.org/distro/D/DBD-Sys.html#DBD-Sys-0.01, this
> issue is not limited to FreeBSD 7.3 - it occures on FreeBSD 7.2 and
> 8.0, too.

I see a bunch of failed FreeBSD test lines, but I don't see anything
relating to getpwent or getreant in the test failure output.  Just lines
like "Parse errors: Bad plan.  You planned 16 tests but ran 12"

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list