* [ECOS] Problem with recv/recvfrom
@ 2001-05-20 15:58 Wade Jensen
0 siblings, 0 replies; only message in thread
From: Wade Jensen @ 2001-05-20 15:58 UTC (permalink / raw)
To: ecos-discuss
The recv function calls recvfrom with a NULL fromlen parameter. The recvfrom
function always dereferences this parameter.
I assume that
msg.msg_namelen = *fromlen;
should be
msg.msg_namelen = fromlen ? *fromlen : (socklen_t)fromlen;
However, is it safe to pass this NULL fromlen pointer to ops->recvmsg?
Thanks,
Wade Jensen
From packages\io\fileio\current\src\socket.cxx:
// -------------------------------------------------------------------------
__externC ssize_t recvfrom (int s, void *buf, size_t len, int flags,
struct sockaddr *from, socklen_t *fromlen)
{
SOCKET_ENTRY();
struct msghdr msg;
struct iovec iov;
ssize_t ret = 0;
int error = 0;
cyg_file *fp;
fp = cyg_fp_get( s );
if( fp == NULL )
FILEIO_RETURN(EBADF);
if( fp->f_type == CYG_FILE_TYPE_SOCKET )
{
cyg_sock_ops *ops = (cyg_sock_ops *)fp->f_xops;
// Set up a message header...
msg.msg_name = (caddr_t)from;
msg.msg_namelen = *fromlen;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
iov.iov_base = buf;
iov.iov_len = len;
msg.msg_control = 0;
msg.msg_flags = flags;
LOCK_SOCKET( fp );
error = ops->recvmsg( fp, &msg, fromlen, &ret );
UNLOCK_SOCKET( fp );
}
cyg_fp_free( fp );
if( error != ENOERR )
SOCKET_RETURN(error);
SOCKET_RETURN_VALUE( ret );
}
// -------------------------------------------------------------------------
__externC ssize_t recv (int s, void *buf, size_t len, int flags)
{
return recvfrom( s, buf, len, flags, NULL, NULL );
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2001-05-20 15:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-05-20 15:58 [ECOS] Problem with recv/recvfrom Wade Jensen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).