Ack from my side ( code review only ). Thank you Srinivas
-----Original Message----- From: Alex Jones [mailto:[email protected]] Sent: Wednesday, October 18, 2017 9:44 PM To: Srinivas Mangipudy <[email protected]> Cc: [email protected]; Alex Jones <[email protected]> Subject: [PATCH 1/1] msg: allow real "const SaNameT" to be used in API calls [#2630] If a real "const SaNameT" is passed into API calls, the agent seg faults. Code in the agent is writing into the "const SaNameT" pointer which is stored in read-only memory. Allow a real "const SaNameT" to be passed into API calls. --- src/msg/agent/mqa_api.c | 32 -------------------------------- src/msg/agent/mqa_def.h | 7 ------- src/msg/apitest/test_saMsgVersionT.cc | 4 ++-- 3 files changed, 2 insertions(+), 41 deletions(-) diff --git a/src/msg/agent/mqa_api.c b/src/msg/agent/mqa_api.c index d211b77..5ef238a 100644 --- a/src/msg/agent/mqa_api.c +++ b/src/msg/agent/mqa_api.c @@ -711,7 +711,6 @@ saMsgQueueOpen(SaMsgHandleT msgHandle, const SaNameT *queueName, return rc; } - m_MQSV_SET_SANAMET(queueName); TRACE_1("queueName %s", queueName->value); if (strncmp((char *)queueName->value, "safMq=", 6)) { @@ -1011,7 +1010,6 @@ saMsgQueueOpenAsync(SaMsgHandleT msgHandle, SaInvocationT invocation, return rc; } - m_MQSV_SET_SANAMET(queueName); TRACE_1("queueName %s ", queueName->value); if (strncmp((char *)queueName->value, "safMq=", 6)) { @@ -1370,7 +1368,6 @@ SaAisErrorT saMsgQueueStatusGet(SaMsgHandleT msgHandle, return rc; } - m_MQSV_SET_SANAMET(queueName); TRACE_1("queueName %s ", queueName->value); /* retrieve MQA CB */ @@ -1667,7 +1664,6 @@ SaAisErrorT saMsgQueueUnlink(SaMsgHandleT msgHandle, const SaNameT *queueName) return rc; } - m_MQSV_SET_SANAMET(queueName); TRACE_1("queueName %s ", queueName->value); /* retrieve MQA CB */ @@ -2189,9 +2185,6 @@ SaAisErrorT mqa_send_message(SaMsgHandleT msgHandle, const SaNameT *destination, return rc; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(destination); TRACE_1("destination queue name %s", destination->value); if (m_MQSV_IS_ACKFLAGS_NOT_VALID(ackFlags)) { @@ -3527,9 +3520,6 @@ SaAisErrorT saMsgMessageSendReceive(SaMsgHandleT msgHandle, return rc; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(destination); TRACE_1("Message send to queueName %s", destination->value); if (m_NCS_SA_IS_VALID_TIME_DURATION(timeout) == false) { @@ -4487,9 +4477,6 @@ SaAisErrorT saMsgQueueGroupCreate(SaMsgHandleT msgHandle, return SA_AIS_ERR_INVALID_PARAM; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(queueGroupName); TRACE_1("queueGroupName %s", queueGroupName->value); if (queueGroupName->length == 0) { @@ -4636,9 +4623,6 @@ SaAisErrorT saMsgQueueGroupDelete(SaMsgHandleT msgHandle, "ERR_INVALID_PARAM: queueGroupName exceeds character 256"); return SA_AIS_ERR_INVALID_PARAM; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(queueGroupName); TRACE_1("queueGroupName %s", queueGroupName->value); /* retrieve MQA CB */ @@ -4771,11 +4755,6 @@ SaAisErrorT saMsgQueueGroupInsert(SaMsgHandleT msgHandle, return SA_AIS_ERR_INVALID_PARAM; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(queueGroupName); - - m_MQSV_SET_SANAMET(queueName); TRACE_1("queueGroupName %s queueName %s", queueGroupName->value, queueName->value); @@ -4907,11 +4886,6 @@ SaAisErrorT saMsgQueueGroupRemove(SaMsgHandleT msgHandle, return SA_AIS_ERR_INVALID_PARAM; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(queueGroupName); - - m_MQSV_SET_SANAMET(queueName); TRACE_1("queueGroupName %s queueName %s", queueGroupName->value, queueName->value); @@ -5045,9 +5019,6 @@ saMsgQueueGroupTrack(SaMsgHandleT msgHandle, const SaNameT *queueGroupName, return SA_AIS_ERR_INVALID_PARAM; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(queueGroupName); TRACE_1("queueGroupName %s", queueGroupName->value); if (!(trackFlags & @@ -5386,9 +5357,6 @@ SaAisErrorT saMsgQueueGroupTrackStop(SaMsgHandleT msgHandle, return SA_AIS_ERR_INVALID_PARAM; } - /* To memset the bytes to zero other than the length bytes in the - * SaNameT Structure */ - m_MQSV_SET_SANAMET(queueGroupName); TRACE_1("queueGroupName %s", queueGroupName->value); /* retrieve MQA CB */ diff --git a/src/msg/agent/mqa_def.h b/src/msg/agent/mqa_def.h index 94d72c8..e2ea1c4 100644 --- a/src/msg/agent/mqa_def.h +++ b/src/msg/agent/mqa_def.h @@ -48,13 +48,6 @@ #define m_MQSV_MQA_RETRIEVE_MQA_CB \ ncshm_take_hdl(NCS_SERVICE_ID_MQA, gl_mqa_hdl) #define m_MQSV_MQA_GIVEUP_MQA_CB ncshm_give_hdl(gl_mqa_hdl) -/* to memset the name->value[length] to remaining bytes till the end of the - * array */ -#define m_MQSV_SET_SANAMET(name) \ - { \ - memset((void *)&name->value[name->length], 0, \ - (size_t)(SA_MAX_NAME_LENGTH - name->length)); \ - } /* function prototypes for client handling*/ MQA_CLIENT_INFO *mqa_client_tree_find_and_add(MQA_CB *mqa_cb, diff --git a/src/msg/apitest/test_saMsgVersionT.cc b/src/msg/apitest/test_saMsgVersionT.cc index 8166d61..f3c7b05 100644 --- a/src/msg/apitest/test_saMsgVersionT.cc +++ b/src/msg/apitest/test_saMsgVersionT.cc @@ -12,8 +12,8 @@ static void saMsgVersion_01(void) { SaAisErrorT rc = saMsgInitialize(&msgHandle, 0, &msg1_1); assert(rc == SA_AIS_OK); - SaNameT queueGroupName = {sizeof("safMqg=messageQGroup") - 1, - "safMqg=messageQGroup"}; + const SaNameT queueGroupName = {sizeof("safMqg=messageQGroup") - 1, + "safMqg=messageQGroup"}; rc = saMsgQueueGroupCreate(msgHandle, &queueGroupName, SA_MSG_QUEUE_GROUP_ROUND_ROBIN); -- 2.9.5 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
