Browse Source

make guid printf pointer-safe, add printf macro for UA_String

Julius Pfrommer 8 years ago
parent
commit
26e1dc7cc8
2 changed files with 11 additions and 8 deletions
  1. 9 6
      include/ua_log.h
  2. 2 2
      src/server/ua_services_discovery.c

+ 9 - 6
include/ua_log.h

@@ -106,12 +106,15 @@ typedef void (*UA_Logger)(UA_LogLevel level, UA_LogCategory category, const char
  * Convenience macros for complex types
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
 #define UA_PRINTF_GUID_FORMAT "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"
-#define UA_PRINTF_GUID_DATA(PREFIX) PREFIX.identifier.guid.data1, PREFIX.identifier.guid.data2, \
-        PREFIX.identifier.guid.data3, PREFIX.identifier.guid.data4[0],  \
-        PREFIX.identifier.guid.data4[1], PREFIX.identifier.guid.data4[2], \
-        PREFIX.identifier.guid.data4[3], PREFIX.identifier.guid.data4[4], \
-        PREFIX.identifier.guid.data4[5], PREFIX.identifier.guid.data4[6], \
-        PREFIX.identifier.guid.data4[7]
+#define UA_PRINTF_GUID_DATA(GUID) (GUID).identifier.guid.data1, (GUID).identifier.guid.data2, \
+        (GUID).identifier.guid.data3, (GUID).identifier.guid.data4[0],  \
+        (GUID).identifier.guid.data4[1], (GUID).identifier.guid.data4[2], \
+        (GUID).identifier.guid.data4[3], (GUID).identifier.guid.data4[4], \
+        (GUID).identifier.guid.data4[5], (GUID).identifier.guid.data4[6], \
+        (GUID).identifier.guid.data4[7]
+
+#define UA_PRINTF_STRING_FORMAT "\"%.*s\""
+#define UA_PRINTF_STRING_DATA(STRING) (STRING).length, (STRING).data
 
 #ifdef __cplusplus
 } // extern "C"

+ 2 - 2
src/server/ua_services_discovery.c

@@ -46,8 +46,8 @@ void Service_GetEndpoints(UA_Server *server, UA_Session *session, const UA_GetEn
        not, clone the endpoints with the discovery url of all networklayers. */
     const UA_String *endpointUrl = &request->endpointUrl;
     if(endpointUrl->length > 0) {
-        UA_LOG_DEBUG_SESSION(server->config.logger, session, "Processing GetEndpointsRequest with endpointUrl \"%.*s\"",
-                             endpointUrl->length, endpointUrl->data);
+        UA_LOG_DEBUG_SESSION(server->config.logger, session, "Processing GetEndpointsRequest with endpointUrl " \
+                             UA_PRINTF_STRING_FORMAT, UA_PRINTF_STRING_DATA(*endpointUrl));
     } else {
         UA_LOG_DEBUG_SESSION(server->config.logger, session, "Processing GetEndpointsRequest with an empty endpointUrl");
     }