summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/libpam/libpam/pam_static.c18
-rw-r--r--lib/libpam/libpam/Makefile11
2 files changed, 10 insertions, 19 deletions
diff --git a/contrib/libpam/libpam/pam_static.c b/contrib/libpam/libpam/pam_static.c
index aac3e99..e511a77 100644
--- a/contrib/libpam/libpam/pam_static.c
+++ b/contrib/libpam/libpam/pam_static.c
@@ -16,7 +16,7 @@
#ifdef PAM_STATIC
-extern struct linker_set _pam_static_modules;
+SET_DECLARE(_pam_static_modules, struct pam_module);
/* Return pointer to data structure used to define a static module */
struct pam_module * _pam_open_static_handler(const char *path)
@@ -24,8 +24,7 @@ struct pam_module * _pam_open_static_handler(const char *path)
int i;
const char *clpath = path;
char *lpath, *end;
- struct pam_module **static_modules =
- (struct pam_module **)_pam_static_modules.ls_items;
+ struct pam_module **static_module;
if (strchr(clpath, '/')) {
/* ignore path and leading "/" */
@@ -41,16 +40,17 @@ struct pam_module * _pam_open_static_handler(const char *path)
}
/* now go find the module */
- for (i = 0; static_modules[i] != NULL; i++) {
- D(("%s=?%s\n", lpath, static_modules[i]->name));
- if (static_modules[i]->name &&
- ! strcmp(static_modules[i]->name, lpath)) {
- break;
+ SET_FOREACH(static_module, _pam_static_modules) {
+ D(("%s=?%s\n", lpath, (*static_module)->name));
+ if ((*static_module)->name &&
+ ! strcmp((*static_module)->name, lpath)) {
+ free(lpath);
+ return (*static_module);
}
}
free(lpath);
- return (static_modules[i]);
+ return (NULL);
}
/* Return pointer to function requested from static module
diff --git a/lib/libpam/libpam/Makefile b/lib/libpam/libpam/Makefile
index 3806f52..49186d3 100644
--- a/lib/libpam/libpam/Makefile
+++ b/lib/libpam/libpam/Makefile
@@ -95,16 +95,7 @@ _EXTRADEPEND: pam_static.c
CLEANFILES+= setdef0.o _pam_static_modules.o setdef1.o \
setdef0.c setdef1.c setdefs.h
-pam_static_modules.o: setdef0.o pam_static.o _pam_static_modules.o setdef1.o
- ${LD} -o ${.TARGET} -r ${.ALLSRC}
-
-setdef0.o: setdef0.c setdefs.h
-setdef1.o: setdef1.c setdefs.h
-
-setdef0.c setdef1.c setdefs.h: _pam_static_modules.o
- gensetdefs ${.ALLSRC}
-
-_pam_static_modules.o: ${STATIC_MODULES}
+pam_static_modules.o: pam_static.o ${STATIC_MODULES}
${LD} -o ${.TARGET} -r --whole-archive ${.ALLSRC}
.else
pam_static_modules.o: pam_static.o ${STATIC_MODULES}
OpenPOWER on IntegriCloud