75 lines
2.0 KiB
Diff
75 lines
2.0 KiB
Diff
|
diff --git a/libpam/Makefile.am b/libpam/Makefile.am
|
||
|
index 875031e..9f27c16 100644
|
||
|
--- a/libpam/Makefile.am
|
||
|
+++ b/libpam/Makefile.am
|
||
|
@@ -3,7 +3,8 @@
|
||
|
#
|
||
|
|
||
|
AM_CFLAGS = -DDEFAULT_MODULE_PATH=\"$(SECUREDIR)/\" -DLIBPAM_COMPILE \
|
||
|
- -I$(srcdir)/include $(LIBPRELUDE_CFLAGS) -DPAM_VERSION=\"$(VERSION)\"
|
||
|
+ -I$(srcdir)/include $(LIBPRELUDE_CFLAGS) \
|
||
|
+ -DPAM_VERSION=\"$(VERSION)\" @ECONF_CFLAGS@
|
||
|
if HAVE_LIBSELINUX
|
||
|
AM_CFLAGS += -D"WITH_SELINUX"
|
||
|
endif
|
||
|
@@ -21,7 +22,7 @@ noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h \
|
||
|
pam_modutil_private.h
|
||
|
|
||
|
libpam_la_LDFLAGS = -no-undefined -version-info 84:2:84
|
||
|
-libpam_la_LIBADD = @LIBAUDIT@ $(LIBPRELUDE_LIBS) @LIBDL@
|
||
|
+libpam_la_LIBADD = @LIBAUDIT@ $(LIBPRELUDE_LIBS) @LIBDL@ @ECONF_LIBS@
|
||
|
|
||
|
if HAVE_VERSIONING
|
||
|
libpam_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libpam.map
|
||
|
diff --git a/libpam/pam_modutil_searchkey.c b/libpam/pam_modutil_searchkey.c
|
||
|
index 338b44f..8e4061f 100644
|
||
|
--- a/libpam/pam_modutil_searchkey.c
|
||
|
+++ b/libpam/pam_modutil_searchkey.c
|
||
|
@@ -13,9 +13,34 @@
|
||
|
#include <string.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <ctype.h>
|
||
|
+#ifdef USE_ECONF
|
||
|
+#include <libeconf.h>
|
||
|
+#endif
|
||
|
|
||
|
#define BUF_SIZE 8192
|
||
|
|
||
|
+#ifdef USE_ECONF
|
||
|
+#define LOGIN_DEFS "/etc/login.defs"
|
||
|
+
|
||
|
+static char *
|
||
|
+econf_search_key (const char *name, const char *suffix, const char *key)
|
||
|
+{
|
||
|
+ econf_file *key_file = NULL;
|
||
|
+ char *val;
|
||
|
+
|
||
|
+ if (econf_readDirs (&key_file, "/usr/etc", "/etc", name, suffix, " \t", "#"))
|
||
|
+ return NULL;
|
||
|
+
|
||
|
+ if (econf_getStringValue (key_file, NULL, key, &val))
|
||
|
+ return NULL;
|
||
|
+
|
||
|
+ econf_free (key_file);
|
||
|
+
|
||
|
+ return val;
|
||
|
+}
|
||
|
+
|
||
|
+#endif
|
||
|
+
|
||
|
/* lookup a value for key in login.defs file or similar key value format */
|
||
|
char *
|
||
|
pam_modutil_search_key(pam_handle_t *pamh UNUSED,
|
||
|
@@ -27,6 +52,11 @@ pam_modutil_search_key(pam_handle_t *pamh UNUSED,
|
||
|
size_t buflen = 0;
|
||
|
char *retval = NULL;
|
||
|
|
||
|
+#ifdef USE_ECONF
|
||
|
+ if (strcmp (file_name, LOGIN_DEFS) == 0)
|
||
|
+ return econf_search_key ("login", ".defs", key);
|
||
|
+#endif
|
||
|
+
|
||
|
fp = fopen(file_name, "r");
|
||
|
if (NULL == fp)
|
||
|
return NULL;
|