If the module path is relative, prepend the module installation
directory which was specified at configure time. Inspired by: NetBSD git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@308 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
parent
ee668335b1
commit
9787583d8d
|
@ -1,3 +1,5 @@
|
||||||
|
# $P4: //depot/projects/openpam/lib/Makefile.am#4 $
|
||||||
|
|
||||||
NULL =
|
NULL =
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/include
|
INCLUDES = -I$(top_srcdir)/include
|
||||||
|
@ -48,6 +50,8 @@ libpam_la_SOURCES = \
|
||||||
pam_vprompt.c \
|
pam_vprompt.c \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
libpam_la_CFLAGS = -DOPENPAM_MODULES_DIR='"@OPENPAM_MODULES_DIR@"'
|
||||||
|
|
||||||
libpam_la_LDFLAGS = -no-undefined -version-info @LIB_MAJ@ @DL_LIBS@
|
libpam_la_LDFLAGS = -no-undefined -version-info @LIB_MAJ@ @DL_LIBS@
|
||||||
|
|
||||||
# Not implemented yet:
|
# Not implemented yet:
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_dynamic.c#13 $
|
* $P4: //depot/projects/openpam/lib/openpam_dynamic.c#14 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
@ -57,6 +57,7 @@ pam_module_t *
|
||||||
openpam_dynamic(const char *path)
|
openpam_dynamic(const char *path)
|
||||||
{
|
{
|
||||||
pam_module_t *module;
|
pam_module_t *module;
|
||||||
|
const char *prefix;
|
||||||
char *vpath;
|
char *vpath;
|
||||||
void *dlh;
|
void *dlh;
|
||||||
int i;
|
int i;
|
||||||
|
@ -65,8 +66,14 @@ openpam_dynamic(const char *path)
|
||||||
if ((module = calloc(1, sizeof *module)) == NULL)
|
if ((module = calloc(1, sizeof *module)) == NULL)
|
||||||
goto buf_err;
|
goto buf_err;
|
||||||
|
|
||||||
|
/* Prepend the standard prefix if not an absolute pathname. */
|
||||||
|
if (path[0] != '/')
|
||||||
|
prefix = OPENPAM_MODULES_DIR;
|
||||||
|
else
|
||||||
|
prefix = "";
|
||||||
|
|
||||||
/* try versioned module first, then unversioned module */
|
/* try versioned module first, then unversioned module */
|
||||||
if (asprintf(&vpath, "%s.%d", path, LIB_MAJ) < 0)
|
if (asprintf(&vpath, "%s%s.%d", prefix, path, LIB_MAJ) < 0)
|
||||||
goto buf_err;
|
goto buf_err;
|
||||||
if ((dlh = dlopen(vpath, RTLD_NOW)) == NULL) {
|
if ((dlh = dlopen(vpath, RTLD_NOW)) == NULL) {
|
||||||
openpam_log(PAM_LOG_DEBUG, "%s: %s", vpath, dlerror());
|
openpam_log(PAM_LOG_DEBUG, "%s: %s", vpath, dlerror());
|
||||||
|
|
Loading…
Reference in New Issue