Parcourir la source

Use snprintf instead of memcpy for better code understanding

Stefan Profanter il y a 6 ans
Parent
commit
6f3fc55f04
1 fichiers modifiés avec 11 ajouts et 11 suppressions
  1. 11 11
      src/server/ua_services_discovery_multicast.c

+ 11 - 11
src/server/ua_services_discovery_multicast.c

@@ -333,19 +333,19 @@ createFullServiceDomain(char *outServiceDomain, size_t maxLen,
         }
     }
 
-    /* Copy into outServiceDomain */
     size_t offset = 0;
-    memcpy(&outServiceDomain[offset], servername->data, servernameLen);
-    offset += servernameLen;
-    if(hostnameLen > 0) {
-        memcpy(&outServiceDomain[offset], "-", 1);
-        ++offset;
-        memcpy(&outServiceDomain[offset], hostname->data, hostnameLen);
-        offset += hostnameLen;
+    if (hostnameLen > 0) {
+        UA_snprintf(outServiceDomain, maxLen - 1, "%.*s-%.*s",
+                    (int) servernameLen, (char *) servername->data,
+                    (int) hostnameLen, (char *) hostname->data);
+        offset = servernameLen + hostnameLen + 1;
     }
-    memcpy(&outServiceDomain[offset], "._opcua-tcp._tcp.local.", 23);
-    offset += 23;
-    outServiceDomain[offset] = 0;
+    else {
+        UA_snprintf(outServiceDomain, maxLen - 1, "%.*s",
+                    (int) servernameLen, (char *) servername->data);
+        offset = servernameLen;
+    }
+    UA_snprintf(&outServiceDomain[offset], 24, "._opcua-tcp._tcp.local.");
 }
 
 /* Check if mDNS already has an entry for given hostname and port combination */