• Stephen Hemminger's avatar
    [LLX]: SOCK_DGRAM interface fixes · 30a584d9
    Stephen Hemminger authored
    The datagram interface of LLC is broken in a couple of ways.
    These were discovered when trying to use it to build an out-of-kernel
    version of STP.
    
    First it didn't pass the source address of the received packet
    in recvfrom(). It needs to copy the source address of received LLC packets
    into the socket control block. At the same time fix a security issue
    because there was uninitialized data leakage. Every recvfrom call
    was just copying out old data.
    
    Second, LLC should not merge multiple packets in one receive call
    on datagram sockets. LLC should preserve packet boundaries on
    SOCK_DGRAM.
    
    This fix goes against the old historical comments about UNIX98 semantics
    but without this fix SOCK_DGRAM is broken and useless. So either ANK's
    interpretation was incorect or UNIX98 standard was wrong.
    Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
    Acked-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    30a584d9
af_llc.c 29.2 KB