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

Reply via email to