This solves another segfault in msg service (and corosync). --- trunk/services/msg.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/trunk/services/msg.c b/trunk/services/msg.c index 00f339d..4e91202 100644 --- a/trunk/services/msg.c +++ b/trunk/services/msg.c @@ -3821,7 +3821,7 @@ static void message_handler_req_exec_msg_messageget ( &req_exec_msg_messageget->queue_name, req_exec_msg_messageget->queue_id); if (queue == NULL) { - error = SA_AIS_ERR_NOT_EXIST; + error = SA_AIS_ERR_BAD_HANDLE; goto error_exit; } @@ -3887,9 +3887,6 @@ error_exit: MESSAGE_RES_MSG_MESSAGEGET; res_lib_msg_messageget.header.error = error; - memcpy (&res_lib_msg_messageget.message, &msg->message, - sizeof (SaMsgMessageT)); /* ? */ - iov[0].iov_base = &res_lib_msg_messageget; iov[0].iov_len = sizeof (struct res_lib_msg_messageget); @@ -3897,6 +3894,8 @@ error_exit: iov[1].iov_base = msg->message.data; iov[1].iov_len = msg->message.size; + memcpy (&res_lib_msg_messageget.message, &msg->message, + sizeof (SaMsgMessageT)); /* ? */ api->ipc_response_iov_send (req_exec_msg_messageget->source.conn, iov, 2); } else { @@ -3904,7 +3903,8 @@ error_exit: } } - free (msg); + if (msg != NULL) + free (msg); } static void message_handler_req_exec_msg_messagedatafree ( -- 1.5.5.6 _______________________________________________ Openais mailing list Openais@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/openais