瀏覽代碼

Use snprintf instead of memcpy for better code understanding

Stefan Profanter 6 年之前
父節點
當前提交
6f3fc55f04
共有 1 個文件被更改,包括 11 次插入11 次删除
  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 */