summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-08-10 12:25:16 +0200
committerThomas Haller <thaller@redhat.com>2022-08-10 12:25:16 +0200
commit219dfea425e4c9f8b27c41ed2ef5a7465cd391d1 (patch)
tree2a710023a9e135849662a0b9ed0f038b8b459658
parent1f5a05150a0fa3f5442f013fad1c8288cf984a68 (diff)
downloadNetworkManager-219dfea425e4c9f8b27c41ed2ef5a7465cd391d1.tar.gz
platform: make NMLOG_COMMON() macro safer by adding a do{}while(0) block
-rw-r--r--src/libnm-platform/nm-platform.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/libnm-platform/nm-platform.c b/src/libnm-platform/nm-platform.c
index ab9664d2ee..161efbd8f8 100644
--- a/src/libnm-platform/nm-platform.c
+++ b/src/libnm-platform/nm-platform.c
@@ -115,24 +115,29 @@ nmp_link_address_get_as_bytes(const NMPLinkAddress *addr)
#define _NMLOG_DOMAIN LOGD_PLATFORM
#define _NMLOG_PREFIX_NAME "platform"
-#define NMLOG_COMMON(level, name, ...) \
- char __prefix[32]; \
- const char *__p_prefix = _NMLOG_PREFIX_NAME; \
- const NMPlatform *const __self = (self); \
- const char *__name = name; \
- \
- if (__self && NM_PLATFORM_GET_PRIVATE(__self)->log_with_ptr) { \
- g_snprintf(__prefix, sizeof(__prefix), "%s[%p]", _NMLOG_PREFIX_NAME, __self); \
- __p_prefix = __prefix; \
- } \
- _nm_log(__level, \
- _NMLOG_DOMAIN, \
- 0, \
- __name, \
- NULL, \
- "%s: %s%s%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
- __p_prefix, \
- NM_PRINT_FMT_QUOTED(__name, "(", __name, ") ", "") _NM_UTILS_MACRO_REST(__VA_ARGS__));
+#define NMLOG_COMMON(level, name, ...) \
+ G_STMT_START \
+ { \
+ char __prefix[32]; \
+ const char *__p_prefix = _NMLOG_PREFIX_NAME; \
+ const NMPlatform *const __self = (self); \
+ const char *__name = name; \
+ \
+ if (__self && NM_PLATFORM_GET_PRIVATE(__self)->log_with_ptr) { \
+ g_snprintf(__prefix, sizeof(__prefix), "%s[%p]", _NMLOG_PREFIX_NAME, __self); \
+ __p_prefix = __prefix; \
+ } \
+ _nm_log(__level, \
+ _NMLOG_DOMAIN, \
+ 0, \
+ __name, \
+ NULL, \
+ "%s: %s%s%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
+ __p_prefix, \
+ NM_PRINT_FMT_QUOTED(__name, "(", __name, ") ", "") \
+ _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
+ } \
+ G_STMT_END
#define _NMLOG(level, ...) \
G_STMT_START \