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 */