public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [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).