From a8e8f91e23845c989e7822b2b6b557e906f234a5 Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 15 Dec 2016 17:23:08 +0100 Subject: [PATCH 1/5] Fix #314: Check ZmqEventSubscriptionChange command event parameter --- src/server/eventcmds.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/server/eventcmds.cpp b/src/server/eventcmds.cpp index b81d68088..1e9c454d4 100644 --- a/src/server/eventcmds.cpp +++ b/src/server/eventcmds.cpp @@ -755,6 +755,37 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa action = (*argin)[2]; event = (*argin)[3]; +// +// Check event type validity +// + + string check_event = event; + transform(check_event.begin(),check_event.end(),check_event.begin(),::tolower); + + string::size_type pos_check = check_event.find(EVENT_COMPAT); + if (pos_check != string::npos) + check_event.erase(0,EVENT_COMPAT_IDL5_SIZE); + + size_t nb_event_type = sizeof(EventName)/sizeof(char *); + bool found = false; + + for (size_t loop = 0;loop < nb_event_type;loop++) + { + if (strcmp(check_event.c_str(),EventName[loop]) == 0) + { + found = true; + break; + } + } + + if (found == false) + { + stringstream ss; + ss << "The event type you sent (" << event << ") is not valid event type"; + + Except::throw_exception(API_WrongNumberOfArgs,ss.str(),"DServer::zmq_event_subscription_change"); + } + bool intr_change = false; if (event == EventName[INTERFACE_CHANGE_EVENT]) intr_change = true; From 792a2ec90163ceef232744418117f9e351c2ca18 Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 15 Dec 2016 17:26:08 +0100 Subject: [PATCH 2/5] Fixed typo in error message --- src/server/eventcmds.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/eventcmds.cpp b/src/server/eventcmds.cpp index 1e9c454d4..cd9a27482 100644 --- a/src/server/eventcmds.cpp +++ b/src/server/eventcmds.cpp @@ -781,7 +781,7 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa if (found == false) { stringstream ss; - ss << "The event type you sent (" << event << ") is not valid event type"; + ss << "The event type you sent (" << event << ") is not a valid event type"; Except::throw_exception(API_WrongNumberOfArgs,ss.str(),"DServer::zmq_event_subscription_change"); } From b60860399014db7d218fc8d0338483760f505a3c Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 15 Dec 2016 18:22:09 +0100 Subject: [PATCH 3/5] renamed loop variable in i. Changed if as suggested by Igor --- src/server/eventcmds.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/eventcmds.cpp b/src/server/eventcmds.cpp index cd9a27482..f43b7fb0a 100644 --- a/src/server/eventcmds.cpp +++ b/src/server/eventcmds.cpp @@ -769,16 +769,16 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa size_t nb_event_type = sizeof(EventName)/sizeof(char *); bool found = false; - for (size_t loop = 0;loop < nb_event_type;loop++) + for (size_t i = 0;i < nb_event_type;i++) { - if (strcmp(check_event.c_str(),EventName[loop]) == 0) + if (strcmp(check_event.c_str(),EventName[i]) == 0) { found = true; break; } } - if (found == false) + if (!found) { stringstream ss; ss << "The event type you sent (" << event << ") is not a valid event type"; From 96ec8fe8238fd9dcb16b880d49f8dc7feedd80b0 Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 15 Dec 2016 18:27:43 +0100 Subject: [PATCH 4/5] Simplify throw_exception call and add 2 TODOs --- src/server/eventcmds.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/eventcmds.cpp b/src/server/eventcmds.cpp index f43b7fb0a..eb1e7c1f9 100644 --- a/src/server/eventcmds.cpp +++ b/src/server/eventcmds.cpp @@ -758,7 +758,7 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa // // Check event type validity // - +// TODO Extract this as a method string check_event = event; transform(check_event.begin(),check_event.end(),check_event.begin(),::tolower); @@ -780,10 +780,10 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa if (!found) { - stringstream ss; - ss << "The event type you sent (" << event << ") is not a valid event type"; - - Except::throw_exception(API_WrongNumberOfArgs,ss.str(),"DServer::zmq_event_subscription_change"); + Except::throw_exception( + API_WrongNumberOfArgs, + "The event type you sent (" + event + ") is not valid event type", //TODO name valid types + "DServer::zmq_event_subscription_change"); } bool intr_change = false; From 9756387216ee4acf3ce7afd196d06e280d461f4e Mon Sep 17 00:00:00 2001 From: Reynald Bourtembourg Date: Thu, 15 Dec 2016 18:29:40 +0100 Subject: [PATCH 5/5] Fixed typo in exception message --- src/server/eventcmds.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/eventcmds.cpp b/src/server/eventcmds.cpp index eb1e7c1f9..1abccb2f9 100644 --- a/src/server/eventcmds.cpp +++ b/src/server/eventcmds.cpp @@ -782,7 +782,7 @@ DevVarLongStringArray *DServer::zmq_event_subscription_change(const Tango::DevVa { Except::throw_exception( API_WrongNumberOfArgs, - "The event type you sent (" + event + ") is not valid event type", //TODO name valid types + "The event type you sent (" + event + ") is not a valid event type", //TODO name valid types "DServer::zmq_event_subscription_change"); }