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