ソースを参照

fixing issues marked by coverity

Stasik0 9 年 前
コミット
055010c14d
共有1 個のファイルを変更した14 個の追加12 個の削除を含む
  1. 14 12
      src/server/ua_server_addressspace.c

+ 14 - 12
src/server/ua_server_addressspace.c

@@ -81,33 +81,35 @@ UA_Server_addDataSourceVariableNode(UA_Server *server, UA_DataSource dataSource,
 /* Userspace Version of addOneWayReferenceWithSession*/
 /* Userspace Version of addOneWayReferenceWithSession*/
 UA_StatusCode
 UA_StatusCode
 UA_Server_AddMonodirectionalReference(UA_Server *server, UA_NodeId sourceNodeId, UA_ExpandedNodeId targetNodeId, UA_NodeId referenceTypeId, UA_Boolean isforward) {
 UA_Server_AddMonodirectionalReference(UA_Server *server, UA_NodeId sourceNodeId, UA_ExpandedNodeId targetNodeId, UA_NodeId referenceTypeId, UA_Boolean isforward) {
-    UA_AddReferencesItem *ref;
+    UA_AddReferencesItem ref;
     UA_StatusCode retval = UA_STATUSCODE_GOOD;
     UA_StatusCode retval = UA_STATUSCODE_GOOD;
     
     
-    ref = UA_AddReferencesItem_new();
-    
-    if (server == UA_NULL) 
+    if (server == UA_NULL) {
         retval |= UA_STATUSCODE_BADSERVERINDEXINVALID;
         retval |= UA_STATUSCODE_BADSERVERINDEXINVALID;
+        return retval;
+    }
     
     
-    retval |= UA_NodeId_copy((const UA_NodeId *) &sourceNodeId, &ref->sourceNodeId);
-    retval |= UA_ExpandedNodeId_copy((const UA_ExpandedNodeId *) &targetNodeId, &ref->targetNodeId);
-    retval |= UA_NodeId_copy((const UA_NodeId *) &referenceTypeId, &ref->referenceTypeId);
+    UA_AddReferencesItem_init(&ref);
+
+    retval |= UA_NodeId_copy((const UA_NodeId *) &sourceNodeId, &ref.sourceNodeId);
+    retval |= UA_ExpandedNodeId_copy((const UA_ExpandedNodeId *) &targetNodeId, &ref.targetNodeId);
+    retval |= UA_NodeId_copy((const UA_NodeId *) &referenceTypeId, &ref.referenceTypeId);
     
     
     if (isforward == UA_TRUE)
     if (isforward == UA_TRUE)
-        ref->isForward = UA_TRUE;
+        ref.isForward = UA_TRUE;
     
     
-    const UA_Node *target = UA_NodeStore_get(server->nodestore, (const UA_NodeId*) &ref->targetNodeId);
+    const UA_Node *target = UA_NodeStore_get(server->nodestore, (const UA_NodeId*) &ref.targetNodeId);
     if(target == UA_NULL)
     if(target == UA_NULL)
         retval |= UA_STATUSCODE_BADNODEIDINVALID;
         retval |= UA_STATUSCODE_BADNODEIDINVALID;
     else {
     else {
-        ref->targetNodeClass = target->nodeClass;
+        ref.targetNodeClass = target->nodeClass;
     }
     }
     if (!retval) {
     if (!retval) {
-        retval |= addOneWayReferenceWithSession(server, (UA_Session *) UA_NULL, ref);
+        retval |= addOneWayReferenceWithSession(server, (UA_Session *) UA_NULL, &ref);
     }
     }
     
     
     
     
-    UA_AddReferencesItem_deleteMembers(ref);
+    UA_AddReferencesItem_deleteMembers(&ref);
     return retval;
     return retval;
 }
 }