From f19cd01ad56306e05145ff51fa392163405b8516 Mon Sep 17 00:00:00 2001
From: Christian Göttsche <cgzones@googlemail.com>
Date: Thu, 4 Jan 2024 19:18:34 +0100
Subject: libpam: enclose function macros

Avoid potential dangling-else issues by wrapping macros inside a while
loop.
---
 libpam/pam_item.c    |  4 ++--
 libpam/pam_private.h | 10 ++++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

(limited to 'libpam')

diff --git a/libpam/pam_item.c b/libpam/pam_item.c
index a27c680b..ad736a4f 100644
--- a/libpam/pam_item.c
+++ b/libpam/pam_item.c
@@ -13,7 +13,7 @@
 #include <syslog.h>
 
 #define TRY_SET(X, Y)                      \
-{                                          \
+do {                                       \
     if ((X) != (Y)) {		           \
 	char *_TMP_ = _pam_strdup(Y);      \
 	if (_TMP_ == NULL && (Y) != NULL)  \
@@ -21,7 +21,7 @@
 	free(X);                           \
 	(X) = _TMP_;                       \
     }					   \
-}
+} while(0)
 
 /* functions */
 
diff --git a/libpam/pam_private.h b/libpam/pam_private.h
index df6872fa..f9dd6223 100644
--- a/libpam/pam_private.h
+++ b/libpam/pam_private.h
@@ -289,10 +289,12 @@ void _pam_parse_control(int *control_array, char *tok);
  */
 
 #define IF_NO_PAMH(pamh,ERR)                      \
-if ((pamh) == NULL) {                             \
-    syslog(LOG_ERR, _PAM_SYSTEM_LOG_PREFIX " %s: NULL pam handle passed", __FUNCTION__); \
-    return ERR;                                   \
-}
+do {                                              \
+    if ((pamh) == NULL) {                         \
+        syslog(LOG_ERR, _PAM_SYSTEM_LOG_PREFIX " %s: NULL pam handle passed", __FUNCTION__); \
+        return ERR;                               \
+    }                                             \
+} while(0)
 
 /*
  * include some helpful macros
-- 
cgit v1.2.3