Browse Source

Fix possible memory issue for node id to string conversion

Stefan Profanter 5 years ago
parent
commit
46224876f5
1 changed files with 4 additions and 0 deletions
  1. 4 0
      src/ua_util.c

+ 4 - 0
src/ua_util.c

@@ -220,6 +220,7 @@ UA_NodeId_toString(const UA_NodeId *nodeId, UA_String *nodeIdStr) {
             nodeIdStr->length = nsLen + 2 + 10 + 1;
             nodeIdStr->data = (UA_Byte*)UA_malloc(nodeIdStr->length);
             if (nodeIdStr->data == NULL) {
+                nodeIdStr->length = 0;
                 UA_free(nsStr);
                 return UA_STATUSCODE_BADOUTOFMEMORY;
             }
@@ -232,6 +233,7 @@ UA_NodeId_toString(const UA_NodeId *nodeId, UA_String *nodeIdStr) {
             nodeIdStr->length = nsLen + 2 + nodeId->identifier.string.length + 1;
             nodeIdStr->data = (UA_Byte*)UA_malloc(nodeIdStr->length);
             if (nodeIdStr->data == NULL) {
+                nodeIdStr->length = 0;
                 UA_free(nsStr);
                 return UA_STATUSCODE_BADOUTOFMEMORY;
             }
@@ -244,6 +246,7 @@ UA_NodeId_toString(const UA_NodeId *nodeId, UA_String *nodeIdStr) {
             nodeIdStr->length = nsLen + 2 + 36 + 1;
             nodeIdStr->data = (UA_Byte*)UA_malloc(nodeIdStr->length);
             if (nodeIdStr->data == NULL) {
+                nodeIdStr->length = 0;
                 UA_free(nsStr);
                 return UA_STATUSCODE_BADOUTOFMEMORY;
             }
@@ -257,6 +260,7 @@ UA_NodeId_toString(const UA_NodeId *nodeId, UA_String *nodeIdStr) {
             nodeIdStr->length = nsLen + 2 + byteStr.length + 1;
             nodeIdStr->data = (UA_Byte*)UA_malloc(nodeIdStr->length);
             if (nodeIdStr->data == NULL) {
+                nodeIdStr->length = 0;
                 UA_String_deleteMembers(&byteStr);
                 UA_free(nsStr);
                 return UA_STATUSCODE_BADOUTOFMEMORY;