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>