On Wed, Apr 15, 2015 at 11:32:11AM +0200, Mark Kettenis wrote:

> > Date: Tue, 14 Apr 2015 21:26:25 -0400
> > From: William Orr <w...@worrbase.com>
> > 
> > Hey,
> > 
> > I was debugging a few CPython test failures yesterday, and I noticed
> > that attaching multiple cmsg structures causes unp_internalize to return
> > EINVAL.
> > 
> > I've looked in unix(4) and sendmsg(2), and this caveat isn't documented
> > anywhere.
> > 
> > I looked at other OSes, and Linux supports this, FreeBSD fails in
> > interesting ways and OS X returns E2BIG.
> > 
> > Is this behavior intentional, and the documentation is missing this
> > failure mode? Or is the behavior unintentional? I'm happy to submit a
> > patch for either, I just want to know which behavior is intended.
> 
> The behaviour is intentional.  The additional complexity of supporting
> multiple cmsghdrs has caused many bugs (and associated security
> issues) in the past.  The alignment fuckups in various OSes make it
> hard to use this functionality in a portable way anyway.  And we only
> support SCM_RIGHTS, so there is no real reason to use multiple
> cmsghdrs in your code.

Plus it *is* possible to send multiple fd's in one message.

        -Otto

Reply via email to