return recv_buffer(fd, buf, size) > 0? 1 : -E_RECVMSG;
}
#else /* HAVE_UCRED */
+
/**
- * Send \p NULL-terminated buffer and Unix credentials of the current process.
+ * Send a buffer and the credentials of the current process to a socket.
*
- * \param sock The socket file descriptor.
- * \param buf The buffer to be sent.
+ * \param sock The file descriptor of the sending socket.
+ * \param buf The zero-terminated buffer to send.
*
- * \return On success, this call returns the number of characters sent. On
- * error, \p -E_SENDMSG is returned.
+ * \return On success, this call returns the number of bytes sent. On errors,
+ * \p -E_SENDMSG is returned.
*
- * \sa sendmsg(2), okir's Black Hats Manual.
+ * \sa \ref recv_cred_buffer, sendmsg(2), socket(7), unix(7), okir's Black Hats
+ * Manual.
*/
ssize_t send_cred_buffer(int sock, char *buf)
{
/* Response data */
iov.iov_base = buf;
- iov.iov_len = strlen(buf);
+ iov.iov_len = strlen(buf);
c.pid = getpid();
c.uid = getuid();
c.gid = getgid();
*(struct ucred *)CMSG_DATA(cmsg) = c;
msg.msg_controllen = cmsg->cmsg_len;
ret = sendmsg(sock, &msg, 0);
- if (ret < 0)
+ if (ret < 0)
ret = -E_SENDMSG;
return ret;
}
/**
* Receive a buffer and the Unix credentials of the sending process.
*
- * \param fd the socket file descriptor.
- * \param buf the buffer to store the message.
- * \param size the size of \a buffer.
+ * \param fd The file descriptor of the receiving socket.
+ * \param buf The buffer to store the received message.
+ * \param size The length of \a buf in bytes.
*
- * \return negative on errors, the user id on success.
+ * \return Negative on errors, the user id of the sending process on success.
*
- * \sa recvmsg(2), okir's Black Hats Manual.
+ * \sa \ref send_cred_buffer and the references given there.
*/
int recv_cred_buffer(int fd, char *buf, size_t size)
{
} else
if (cmsg->cmsg_level == SOL_SOCKET
&& cmsg->cmsg_type == SCM_RIGHTS) {
- dispose_fds((int *) CMSG_DATA(cmsg),
+ dispose_fds((int *)CMSG_DATA(cmsg),
(cmsg->cmsg_len - CMSG_LEN(0))
/ sizeof(int));
}