Browse Source

Fix wrong calculation of array size of discovery urls

Replace multiplication with addition
Stefan Profanter 7 years ago
parent
commit
34b12ad1b2
1 changed files with 4 additions and 2 deletions
  1. 4 2
      src/server/ua_server_discovery.c

+ 4 - 2
src/server/ua_server_discovery.c

@@ -64,9 +64,11 @@ register_server_with_discovery_server(UA_Server *server,
     /* Copy the discovery urls from the server config and the network layers*/
     size_t config_discurls = server->config.applicationDescription.discoveryUrlsSize;
     size_t nl_discurls = server->config.networkLayersSize;
-    size_t total_discurls = config_discurls * nl_discurls;
+    size_t total_discurls = config_discurls + nl_discurls;
     request.server.discoveryUrls = (UA_String*)UA_alloca(sizeof(UA_String) * total_discurls);
-    request.server.discoveryUrlsSize = config_discurls + nl_discurls;
+    if (!request.server.discoveryUrls)
+        return UA_STATUSCODE_BADOUTOFMEMORY;
+    request.server.discoveryUrlsSize = total_discurls;
 
     for(size_t i = 0; i < config_discurls; ++i)
         request.server.discoveryUrls[i] = server->config.applicationDescription.discoveryUrls[i];