瀏覽代碼

feature: check target nodeclass in AddReferences service

Julius Pfrommer 8 年之前
父節點
當前提交
dd23e5cb92
共有 1 個文件被更改,包括 3 次插入0 次删除
  1. 3 0
      src/server/ua_services_nodemanagement.c

+ 3 - 0
src/server/ua_services_nodemanagement.c

@@ -919,6 +919,9 @@ UA_Server_addMethodNode(UA_Server *server, const UA_NodeId requestedNewNodeId,
 static UA_StatusCode
 addOneWayReference(UA_Server *server, UA_Session *session,
                    UA_Node *node, const UA_AddReferencesItem *item) {
+    if(item->targetNodeClass != UA_NODECLASS_UNSPECIFIED &&
+       item->targetNodeClass != node->nodeClass)
+        return UA_STATUSCODE_BADNODECLASSINVALID;
     size_t i = node->referencesSize;
     size_t refssize = (i+1) | 3; // so the realloc is not necessary every time
     UA_ReferenceNode *new_refs = UA_realloc(node->references, sizeof(UA_ReferenceNode) * refssize);