Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Dec 2011 19:33:30 +0100
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        Gleb Smirnoff <glebius@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:  <867h1osbgl.fsf@ds4.des.no>
In-Reply-To: <86bor0sbra.fsf@ds4.des.no> ("Dag-Erling =?utf-8?Q?Sm=C3=B8rg?= =?utf-8?Q?rav=22's?= message of "Thu, 22 Dec 2011 19:27:05 %2B0100")
References:  <201112221810.pBMIAFlo028054@svn.freebsd.org> <20111222182219.GS80057@FreeBSD.org> <86bor0sbra.fsf@ds4.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
Actually, there is no good general solution, because the rtld does not
set errno.  Here's what I came up with:

Index: openpam_dynamic.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- openpam_dynamic.c	(revision 509)
+++ openpam_dynamic.c	(working copy)
@@ -63,10 +63,15 @@
 static void *
 try_dlopen(const char *modfn)
 {
+	void *dlh;
=20
 	if (openpam_check_path_owner_perms(modfn) !=3D 0)
 		return (NULL);
-	return (dlopen(modfn, RTLD_NOW));
+	if ((dlh =3D dlopen(modfn, RTLD_NOW)) =3D=3D NULL) {
+		openpam_log(PAM_LOG_DEBUG, "%s: %s", modfn, dlerror());
+		errno =3D 0;
+	}
+	return (dlh);
 }
=20=20=20=20=20
 /*
@@ -124,7 +129,8 @@
 		dlclose(dlh);
 	FREE(module);
 err:
-	openpam_log(PAM_LOG_ERROR, "%m");
+	if (errno !=3D 0)
+		openpam_log(PAM_LOG_ERROR, "%s: %m", path);
 	return (NULL);
 }
=20

I'll wait for your feedback before I commit it.

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no



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