Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Mar 2004 18:16:31 -0500 (EST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        freebsd-net@FreeBSD.org
Subject:   Re: in_pcbbind_setup(), etc.
Message-ID:  <Pine.NEB.3.96L.1040323181412.20483A-100000@fledge.watson.org>
In-Reply-To: <20040323123831.GM8930@darkness.comp.waw.pl>

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

On Tue, 23 Mar 2004, Pawel Jakub Dawidek wrote:

> I'm looking at in_pcbbind_setup() and this doesn't looks right in few
> places. 
> 
> For example: 'td' can be NULL? It is offten tested, but not always,
> Line 290:
> 		if (sin->sin_addr.s_addr != INADDR_ANY)
> 			if (prison_ip(td->td_ucred, 0, &sin->sin_addr.s_addr))
> 				return(EINVAL);
> td_ucred is used, but 'td' is not tested.
> 
> If this is always current thread, it can't be NULL, right?  If this not
> have to be current thread, we cannot touch td_ucred here, because (from
> proc.h): 

Prior to FreeBSD 5.x, curproc could be NULL in interrupt context.  With
the introduction of curthread and the move to interrupt threads, curthread
became always non-NULL.  However, sometimes the use of curthread may not
make sense.  :-)  I think I'd prefer it if we passed an explicit
credential into a number of these situations, which could be NULL if "the
system" was requesting a service as opposed to an explicit user process.
However, I'm not 100% convinced that is the right approach either.  Note
that we have some similar "confusions" relating to use of cached
credentials in sockets, etc.  The whole issue probably needs to be
discussed after some detailed analysis, and revisited.

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert@fledge.watson.org      Senior Research Scientist, McAfee Research


> 
> [...]
>  *      k - only accessed by curthread
> [...]
> 	struct ucred	*td_ucred;	/* (k) Reference to credentials. */
> [...]
> 
> Not telling that we can just remove this argument if this is always
> current thread.
> 
> -- 
> Pawel Jakub Dawidek                       http://www.FreeBSD.org
> pjd@FreeBSD.org                           http://garage.freebsd.pl
> FreeBSD committer                         Am I Evil? Yes, I Am!
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1040323181412.20483A-100000>