Explorar el Código

Merge pull request #1297 from open62541/hotfix/fuzz_3736

Check for duplicate entry in filter list
Stefan Profanter hace 7 años
padre
commit
0c2744110f
Se han modificado 1 ficheros con 10 adiciones y 1 borrados
  1. 10 1
      src/server/ua_services_discovery.c

+ 10 - 1
src/server/ua_services_discovery.c

@@ -133,7 +133,16 @@ void Service_FindServers(UA_Server *server, UA_Session *session,
                 registeredServer_list_entry* current;
                 LIST_FOREACH(current, &server->registeredServers, pointers) {
                     if(UA_String_equal(&current->registeredServer.serverUri, &request->serverUris[i])) {
-                        foundServerFilteredPointer[foundServersSize++] = &current->registeredServer;
+                        // check if entry already in list:
+                        UA_Boolean existing = false;
+                        for (size_t j=0; j<foundServersSize; j++) {
+                            if (UA_String_equal(&foundServerFilteredPointer[j]->serverUri, &request->serverUris[i])) {
+                                existing = true;
+                                break;
+                            }
+                        }
+                        if (!existing)
+                            foundServerFilteredPointer[foundServersSize++] = &current->registeredServer;
                         break;
                     }
                 }