From 4f544f28b70fb87025fa4ffdf7321d827d904c78 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sun, 27 Apr 2014 22:49:22 +0400 Subject: [PATCH] Service caller: Server Node ID validation before call --- libuavcan/src/node/uc_service_client.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libuavcan/src/node/uc_service_client.cpp b/libuavcan/src/node/uc_service_client.cpp index 1a00bedb43..773ef578cf 100644 --- a/libuavcan/src/node/uc_service_client.cpp +++ b/libuavcan/src/node/uc_service_client.cpp @@ -12,6 +12,15 @@ int ServiceClientBase::prepareToCall(INode& node, const char* dtname, NodeID ser { pending_ = true; + /* + * Making sure we're not going to get transport error because of invalid input data + */ + if (!server_node_id.isUnicast() || (server_node_id == node.getNodeID())) + { + UAVCAN_TRACE("ServiceClient", "Invalid Server Node ID"); + return -ErrInvalidParam; + } + /* * Determining the Data Type ID */