Преглед изворни кода

Fix: Safe access to NodeId

Stefan Profanter пре 8 година
родитељ
комит
cedc9e61f4
1 измењених фајлова са 3 додато и 1 уклоњено
  1. 3 1
      src/server/ua_server.c

+ 3 - 1
src/server/ua_server.c

@@ -911,7 +911,9 @@ UA_Server * UA_Server_new(const UA_ServerConfig config) {
     
     // If we are in an UA conformant namespace, the above function just created a full ServerType object.
     // Before readding every variable, delete whatever got instantiated.
-    deleteInstanceChildren(server, &servernode->nodeId);
+    // here we can't reuse servernode->nodeId because it may be deleted in addNodeInternalWithType if the node could not be added
+    UA_NodeId serverNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_SERVER);
+    deleteInstanceChildren(server, &serverNodeId);
     
     UA_VariableNode *namespaceArray = UA_NodeStore_newVariableNode();
     copyNames((UA_Node*)namespaceArray, "NamespaceArray");