cvs commit: src/kerberos5/lib/libroken Makefile

Andre Oppermann andre at freebsd.org
Tue Feb 3 09:04:21 PST 2004


Andre Oppermann wrote:
> 
> Ken Smith wrote:
> >
> > On Tue, Feb 03, 2004 at 11:28:24AM -0500, Tom Rhodes wrote:
> > > On Tue, 3 Feb 2004 01:32:11 -0800 (PST)
> > > Ruslan Ermilov <ru at FreeBSD.org> wrote:
> > >
> > > > bland       2004/02/03 01:32:11 PST
> > >   ^^^^^
> > >
> > > You're bland... :)
> > >
> > > >
> > > >   FreeBSD src repository
> > > >
> > > >   Modified files:
> > > >     kerberos5/lib/libroken Makefile
> > > >   Log:
> > > >   Take signal.c out of sources.
> > > >
> > > >   Reviewed by:    nectar
> > >
> > > Any idea what is causing this yet?  Perhaps I missed/overlooked/ignored
> > > the discussion?
> > >
> > > --
> > > Tom Rhodes
> >
> > We're actively trying to track it down now.  No ETA on it being fixed
> > at this point, it is probably buried deep inside some perl scripts
> > but that's just a guess.  We have caught the last couple of examples
> > to help try and track it down though (two or three have happened in
> > the last two or three days).
> 
> All this magic happens in CVSROOT-src/cfg.pm where $PID for temporary
> files and $COMMITTER are set.  $PID is probably not the problem but
> $COMMITTER seems to be.  The text in this variable is put verbatim into
> the commit message in CVSROOT-src/log_accum.pl function build_header().
> 
> I'm not a perl hacker so I can't really comment on the code snipped
> below but it looks strange that the first $ENV{} has the environment
> variable name in "" and the second one in '' quotes.  At least it seems
> to be inconsistent.  I wonder if we ever can get into the case where
> LOGNAME and USER are not set in the users environment.  It might be
> that for some SSH setups the environment is cleared or altered on
> freefall.  Nontheless I don't think any of the others should return
> anything else than the current username.  Unless there is a bug in
> the kernel wrt credential handling or some other bug in perl.
> 
>  # The username of the committer.
>  $COMMITTER = $ENV{"LOGNAME"} || $ENV{'USER'} || getlogin
>                 || (getpwuid($<))[0] || sprintf("uid#%d",$<);

Hmm...  getlogin might be the problem (from perl man page):

 getlogin

    Implements the C library function of the same name, which on most systems
    returns the current login from /etc/utmp, if any. If null, use getpwuid.

Using LOGNAME and USER from the environment seems to be pretty unsave
as it can be changed by the user to any arbitrary string (or other
username).

-- 
Andre


More information about the cvs-src mailing list