From owner-p4-projects@FreeBSD.ORG Tue Feb 17 02:14:02 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3E7FE16A4CE; Tue, 17 Feb 2004 02:14:02 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1869116A4CE for ; Tue, 17 Feb 2004 02:14:02 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F06D743D1D for ; Tue, 17 Feb 2004 02:14:01 -0800 (PST) (envelope-from des@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i1HAE1Ge080671 for ; Tue, 17 Feb 2004 02:14:01 -0800 (PST) (envelope-from des@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i1HAE1ed080668 for perforce@freebsd.org; Tue, 17 Feb 2004 02:14:01 -0800 (PST) (envelope-from des@freebsd.org) Date: Tue, 17 Feb 2004 02:14:01 -0800 (PST) Message-Id: <200402171014.i1HAE1ed080668@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to des@freebsd.org using -f From: Dag-Erling Smorgrav To: Perforce Change Reviews Subject: PERFORCE change 47094 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Feb 2004 10:14:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=47094 Change 47094 by des@des.at.c4is.org on 2004/02/17 02:13:13 Make the ENTER*() and RETURN*() macros safe from side-effects, and solve the "dereferencing NULL pointer" warning. Affected files ... .. //depot/projects/openpam/lib/openpam_impl.h#29 edit Differences ... ==== //depot/projects/openpam/lib/openpam_impl.h#29 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/openpam/lib/openpam_impl.h#28 $ + * $P4: //depot/projects/openpam/lib/openpam_impl.h#29 $ */ #ifndef _OPENPAM_IMPL_H_INCLUDED @@ -137,45 +137,52 @@ #ifdef DEBUG #define ENTER() openpam_log(PAM_LOG_DEBUG, "entering") #define ENTERI(i) do { \ - if ((i) > 0 && (i) < PAM_NUM_ITEMS) \ - openpam_log(PAM_LOG_DEBUG, "entering: %s", _pam_item_name[i]); \ + int _i = (i); \ + if (_i > 0 && _i < PAM_NUM_ITEMS) \ + openpam_log(PAM_LOG_DEBUG, "entering: %s", _pam_item_name[_i]); \ else \ - openpam_log(PAM_LOG_DEBUG, "entering: %d", (i)); \ + openpam_log(PAM_LOG_DEBUG, "entering: %d", _i); \ } while (0) #define ENTERN(n) do { \ - openpam_log(PAM_LOG_DEBUG, "entering: %d", (n)); \ + int _n = (n); \ + openpam_log(PAM_LOG_DEBUG, "entering: %d", _n); \ } while (0) #define ENTERS(s) do { \ - if ((s) == NULL) \ + const char *_s = (s); \ + if (_s == NULL) \ openpam_log(PAM_LOG_DEBUG, "entering: NULL"); \ else \ - openpam_log(PAM_LOG_DEBUG, "entering: '%s'", (s)); \ + openpam_log(PAM_LOG_DEBUG, "entering: '%s'", _s); \ } while (0) #define RETURNV() openpam_log(PAM_LOG_DEBUG, "returning") #define RETURNC(c) do { \ - if ((c) >= 0 && (c) < PAM_NUM_ERRORS) \ - openpam_log(PAM_LOG_DEBUG, "returning %s", _pam_err_name[c]); \ + int _c = (c); \ + if (_c >= 0 && _c < PAM_NUM_ERRORS) \ + openpam_log(PAM_LOG_DEBUG, "returning %s", _pam_err_name[_c]); \ else \ - openpam_log(PAM_LOG_DEBUG, "returning %d!", (c)); \ - return (c); \ + openpam_log(PAM_LOG_DEBUG, "returning %d!", _c); \ + return (_c); \ } while (0) #define RETURNN(n) do { \ - openpam_log(PAM_LOG_DEBUG, "returning %d", (n)); \ - return (n); \ + int _n = (n); \ + openpam_log(PAM_LOG_DEBUG, "returning %d", _n); \ + return (_n); \ } while (0) #define RETURNP(p) do { \ - if ((p) == NULL) \ + const void *_p = (p); \ + if (_p == NULL) \ openpam_log(PAM_LOG_DEBUG, "returning NULL"); \ else \ - openpam_log(PAM_LOG_DEBUG, "returning %p", (p)); \ + openpam_log(PAM_LOG_DEBUG, "returning %p", _p); \ return (p); \ } while (0) #define RETURNS(s) do { \ - if ((s) == NULL) \ + const char *_s = (s); \ + if (_s == NULL) \ openpam_log(PAM_LOG_DEBUG, "returning NULL"); \ else \ - openpam_log(PAM_LOG_DEBUG, "returning '%s'", (s)); \ - return (s); \ + openpam_log(PAM_LOG_DEBUG, "returning '%s'", _s); \ + return (_s); \ } while (0) #else #define ENTER()