Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Aug 1998 21:58:18 +0200 (CEST)
From:      Stephane Legrand <stephane@lituus.fr>
To:        hackers@FreeBSD.ORG
Cc:        mackler@barter.dewline.com
Subject:   getpwnam() and getpwuid() functions in libc (was ProFTPD - pwd.db)
Message-ID:  <199808241958.VAA02683@sequoia.lituus.fr>
In-Reply-To: <199808190614.CAA26143@barter.dewline.com>
References:  <199808190614.CAA26143@barter.dewline.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Hello,

I tested the patch proposed by Adam Mackler on FreeBSD-current and it
works well. It corrects a problem with ProFTPD.

As the ProFTPD author (Floody <flood@evcom.net>) say, the FreeBSD libc
seems to be really different from the others *BSD for that particular
point. Should the endpwent() function be called only if _pw_stayopen
is false (as the patch suggests and as others *BSD seem do) ?


Adam Mackler writes:
 > > Date: Thu, 6 Aug 1998 17:50:08 -0400
 > > From: Floody <flood@evcom.net>
 > > Reply-To: proftpd-l@evcom.net
 > > To: Karl Pielorz <kpielorz@tdx.co.uk>
 > > Cc: proftpd-l@evcom.net
 > > Subject: Re: [proftpd-l] New ProFTPd user - Security, Incoming and pwd.db?
 > > 
 > > Ok.  I put up a test FreeBSD 2.2.7 system.  There appears to be a libc
 > > problem with the setpassent() function, which doesn't work on FreeBSD as
 > > documented in the man pages (or on any other BSD).  This is the heart of
 > > the problem.  There is no workaround until libc is fixed.
 > 
 > Hi:
 > 
 > I think the following patch may fix the problem, but I'm afraid
 > I don't know how to rebuild my c library.  If you find out if this
 > works can you let me know?  Thanks.
 > 
 > 
 > *** getpwent.c  Wed Aug 19 02:00:13 1998
 > --- getpwent.c.dist     Wed Aug 19 01:58:33 1998
 > ***************
 > *** 194,201 ****
 >         if (rval && (_pw_passwd.pw_name[0] == '+'||
 >                         _pw_passwd.pw_name[0] == '-')) rval = 0;
 >   
 > !       if (!_pw_stayopen)
 > !         endpwent();
 >         return(rval ? &_pw_passwd : (struct passwd *)NULL);
 >   }
 >   
 > --- 194,200 ----
 >         if (rval && (_pw_passwd.pw_name[0] == '+'||
 >                         _pw_passwd.pw_name[0] == '-')) rval = 0;
 >   
 > !       endpwent();
 >         return(rval ? &_pw_passwd : (struct passwd *)NULL);
 >   }
 >   
 > 
 > -- 
 > Adam Mackler
 > Dewline Communications, LLC
 > 212-505-9149
 > 


-- 
stephane@lituus.fr            |  systeme d'exploitation FreeBSD
http://195.25.51.6/stephane/  |  http://www.freebsd.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199808241958.VAA02683>