Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 2011 22:22:19 +0400
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        Dag-Erling Smorgrav <des@FreeBSD.org>
Cc:        svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, svn-src-vendor@FreeBSD.org
Subject:   Re: svn commit: r228809 - vendor/openpam/dist/lib
Message-ID:  <20111222182219.GS80057@FreeBSD.org>
In-Reply-To: <201112221810.pBMIAFlo028054@svn.freebsd.org>
References:  <201112221810.pBMIAFlo028054@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
  Dag-Erling,

On Thu, Dec 22, 2011 at 06:10:15PM +0000, Dag-Erling Smorgrav wrote:
D> Author: des
D> Date: Thu Dec 22 18:10:15 2011
D> New Revision: 228809
D> URL: http://svn.freebsd.org/changeset/base/228809
D> 
D> Log:
D>   Merge upstream r509: don't log an error in the common case (ENOENT).
D> 
D> Modified:
D>   vendor/openpam/dist/lib/openpam_check_owner_perms.c
D> 
D> Modified: vendor/openpam/dist/lib/openpam_check_owner_perms.c
D> ==============================================================================
D> --- vendor/openpam/dist/lib/openpam_check_owner_perms.c	Thu Dec 22 16:40:35 2011	(r228808)
D> +++ vendor/openpam/dist/lib/openpam_check_owner_perms.c	Thu Dec 22 18:10:15 2011	(r228809)
D> @@ -104,9 +104,11 @@ openpam_check_path_owner_perms(const cha
D>  	len = strlen(pathbuf);
D>  	while (len > 0) {
D>  		if (stat(pathbuf, &sb) != 0) {
D> -			serrno = errno;
D> -			openpam_log(PAM_LOG_ERROR, "%s: %m", pathbuf);
D> -			errno = serrno;
D> +			if (errno != ENOENT) {
D> +				serrno = errno;
D> +				openpam_log(PAM_LOG_ERROR, "%s: %m", pathbuf);
D> +				errno = serrno;
D> +			}
D>  			return (-1);
D>  		}
D>  		if ((sb.st_uid != root && sb.st_uid != arbitrator) ||

I haven't yet tested this, but code looks like it is not going to print
anything in a case I don't have /usr/local/bin/pam_foo.so, while purpose
of the patch is to avoid logging of failure to open
/usr/local/bin/pam_foo.so.5.

Although openpam_dynamic() will do some logging of errno value, the name
of the failed file won't be logged. If I got a lot of modules configured,
then I can't figure out which one is ENOENT.

IMHO, some no_log flag should be passed down from the try_dlopen() to fix
the issue correctly.

-- 
Totus tuus, Glebius.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111222182219.GS80057>