int muse_core_msg_recv_fd(int sock_fd, char *buf, int *out_fd)
{
int ret = 0;
+ int buf_len = 0;
int pid;
struct cmsghdr *cptr;
struct msghdr msg;
return RECV_FAIL;
}
+ while (!buf[buf_len] && buf_len < MUSE_MSG_MAX_LENGTH)
+ buf_len++;
+
+ if (buf_len < msg_info.size && buf_len != 0) {
+ LOGE("stack overflow caution !! [recv buf's length (%d) must be larger than msg' length (%d)", buf_len, msg_info.size);
+ return RECV_FAIL;
+ }
+
if (msg_info.marker != MUSE_MSG_HEAD) {
LOGE("invalid marker 0x%x", msg_info.marker);
return RECV_FAIL;
p_event->events = EPOLLRDHUP;
if (epoll_ctl(ep_fd, EPOLL_CTL_MOD, fd, p_event) == EPOLL_ERR) {
strerror_r(errno, err_msg, MUSE_MSG_LEN_MAX);
- LOGE("epoll ctl error - %s", err_msg);
+ LOGE("epoll ctl error - %s [%d]", err_msg, errno);
}
event_value = MUSE_EVENT_CONNECTION_STATE_CHANGED;
if (epoll_ctl(ep_fd, EPOLL_CTL_DEL, fd, p_event) == EPOLL_ERR) {
strerror_r(errno, err_msg, MUSE_MSG_LEN_MAX);
- LOGE("epoll ctl error - %s", err_msg);
+ LOGE("epoll ctl error - %s [%d]", err_msg, errno);
}
*state_value = MUSE_CONNECTION_STATE_DISCONNECTED;