Re: SO_REUSEADDR redux

David S. Miller (davem@redhat.com)
Thu, 1 Feb 2001 21:46:50 -0800 (PST)


Paul D. Smith writes:
> %% Alan Cox <alan@lxorguk.ukuu.org.uk> writes:
>
> >> This application uses SO_REUSEADDR in conjunction with INADDR_ANY. What
> >> it does is bind() to INADDR_ANY, then listen(). Then, it proceeds to
> >> bind (but _not_ listen) various other specific addresses.
>
> ac> That should be ok if its setting SO_REUSEADDR
>
> I agree, and so does Solaris/FreeBSD, but Linux doesn't.

After reading up some code, FreeBSD does do a bind() check which is
just as restrictive as Linux's except that they allow INADDR_ANY
combinations when the credentials of the user doing the bind() match
the credentials of all other sockets bound to that port.

I don't think we should change our behavior. Allowing the combination
in question only when the UIDs match between the socket owners is
dubious at best.

I actually went to the FreeBSD code because what Steven's showed
was extremely loose in what it let through. It allowed the nfs
port override trick Alan mentioned.

Later,
David S. Miller
davem@redhat.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/