소스 검색

Fix a possible double release of nodes

Julius Pfrommer 7 년 전
부모
커밋
1832d0ef8e
1개의 변경된 파일2개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 2
      src/server/ua_services_nodemanagement.c

+ 2 - 2
src/server/ua_services_nodemanagement.c

@@ -876,8 +876,6 @@ AddNode_typeCheckAddRefs(UA_Server *server, UA_Session *session, const UA_NodeId
     UA_Nodestore_release(server, node);
     if(type)
         UA_Nodestore_release(server, type);
-    if(retval != UA_STATUSCODE_GOOD)
-        UA_Server_deleteNode(server, *nodeId, UA_TRUE);
     return retval;
 }
 
@@ -980,6 +978,8 @@ Operation_addNode_begin(UA_Server *server, UA_Session *session, void *nodeContex
     /* Typecheck and add references to parent and type definition */
     retval = AddNode_typeCheckAddRefs(server, session, outNewNodeId, parentNodeId,
                                       referenceTypeId, &item->typeDefinition.nodeId);
+    if(retval != UA_STATUSCODE_GOOD)
+        UA_Server_deleteNode(server, *outNewNodeId, UA_TRUE);
     if(outNewNodeId == &newId)
         UA_NodeId_deleteMembers(&newId);
     return retval;