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
===================================================================
--- openpam_dynamic.c (revision 509)
+++ openpam_dynamic.c (working copy)
@@ -63,10 +63,15 @@
static void *
try_dlopen(const char *modfn)
{
+ void *dlh;
if (openpam_check_path_owner_perms(modfn) != 0)
return (NULL);
- return (dlopen(modfn, RTLD_NOW));
+ if ((dlh = dlopen(modfn, RTLD_NOW)) == NULL) {
+ openpam_log(PAM_LOG_DEBUG, "%s: %s", modfn, dlerror());
+ errno = 0;
+ }
+ return (dlh);
}
/*
@@ -124,7 +129,8 @@
dlclose(dlh);
FREE(module);
err:
- openpam_log(PAM_LOG_ERROR, "%m");
+ if (errno != 0)
+ openpam_log(PAM_LOG_ERROR, "%s: %m", path);
return (NULL);
}
I'll wait for your feedback before I commit it.
DES
--
Dag-Erling Smørgrav - des@des.no
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?867h1osbgl.fsf>
