[lkml]   [1999]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: sendmsg() arguments

> In Linux 2.0.x and other systems sendmsg() in its second argument msg
> allows msg->msg_namelen to contain nonsense if msg->msg_name is NULL (what
> kinda makes sense -- NULL in msg->msg_name means that there is no address
> involved, so its size is meaningless). However 2.2.x checks msg->msg_namelen
> instead -- if it's nonzero, msg->msg_name is considered to be an address
> even if it's NULL (and therefore error is returned). Why?

Because I consider this as the only correct way.

sendmsg() behaviour is not prescribed by any standards
and this way is preferred, because:

- it is error prone: bad msg_name and msg_namelen!=0 is
usual application bug, showing malloc failure or memory corruption.
- it saves one statement if (name==NULL) namelen=0

BTW some time ago recvfrom() behaved in the same manner,
but broken way appeared to be described as valid in UNIX98,
so that it was changed.

Alexey Kuznetsov

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:51    [W:0.051 / U:2.632 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site