From 0f25192bcb698b7feb88db242e42a841424a7a7f Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Fri, 16 Aug 2019 15:08:49 +0200 Subject: [PATCH] Return error for invalid name nodes Signed-off-by: Erik Boasson --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index a0ab8d7..17068be 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -31,6 +31,7 @@ #include "rmw/get_service_names_and_types.h" #include "rmw/get_topic_names_and_types.h" #include "rmw/get_node_info_and_types.h" +#include "rmw/validate_node_name.h" #include "rmw/rmw.h" #include "rmw/sanity_checks.h" @@ -359,7 +360,12 @@ extern "C" rmw_node_t *rmw_create_node (rmw_context_t *context, const char *name RET_NULL_X (namespace_, return nullptr); (void) domain_id; (void) security_options; - + rmw_ret_t ret; + int dummy_validation_result; + size_t dummy_invalid_index; + if ((ret = rmw_validate_node_name (name, &dummy_validation_result, &dummy_invalid_index)) != RMW_RET_OK) { + return nullptr; + } dds_qos_t *qos = dds_create_qos (); std::string user_data = get_node_user_data (name, namespace_); dds_qset_userdata (qos, user_data.c_str (), user_data.size ()); @@ -1813,6 +1819,13 @@ static rmw_ret_t get_endpoint_names_and_types_by_node (const rmw_node_t *node, r if (ret != RMW_RET_OK) { return ret; } + if (node_name) { + int dummy_validation_result; + size_t dummy_invalid_index; + if ((ret = rmw_validate_node_name (node_name, &dummy_validation_result, &dummy_invalid_index)) != RMW_RET_OK) { + return ret; + } + } std::set guids; if (node_name != nullptr && (ret = get_node_guids (node_name, node_namespace, guids)) != RMW_RET_OK) { return ret; @@ -1851,6 +1864,13 @@ static rmw_ret_t get_service_names_and_types_by_node (const rmw_node_t *node, rc if (ret != RMW_RET_OK) { return ret; } + if (node_name) { + int dummy_validation_result; + size_t dummy_invalid_index; + if ((ret = rmw_validate_node_name (node_name, &dummy_validation_result, &dummy_invalid_index)) != RMW_RET_OK) { + return ret; + } + } std::set guids; if (node_name != nullptr && (ret = get_node_guids (node_name, node_namespace, guids)) != RMW_RET_OK) { return ret;