소스 검색

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 */