ソースを参照

Fix possible memory issue for node id to string conversion

Stefan Profanter 5 年 前
コミット
46224876f5
共有1 個のファイルを変更した4 個の追加0 個の削除を含む
  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;