|
|
7a6d5b1 |
diff --git a/.gitignore b/.gitignore
|
|
|
7a6d5b1 |
index 5454bef..6244609 100644
|
|
|
7a6d5b1 |
--- a/.gitignore
|
|
|
7a6d5b1 |
+++ b/.gitignore
|
|
|
7a6d5b1 |
@@ -28,4 +28,8 @@ umich_ldap.la
|
|
|
7a6d5b1 |
umich_ldap.lo
|
|
|
7a6d5b1 |
configure.in~
|
|
|
7a6d5b1 |
m4/
|
|
|
7a6d5b1 |
-
|
|
|
7a6d5b1 |
+*.o
|
|
|
7a6d5b1 |
+cscope.*
|
|
|
7a6d5b1 |
+config.h
|
|
|
7a6d5b1 |
+config.h.in
|
|
|
7a6d5b1 |
+stamp-h1
|
|
|
d322f0a |
diff --git a/Makefile.am b/Makefile.am
|
|
|
d322f0a |
index 296e277..0832c1c 100644
|
|
|
d322f0a |
--- a/Makefile.am
|
|
|
d322f0a |
+++ b/Makefile.am
|
|
|
d322f0a |
@@ -26,7 +26,6 @@ pkglib_LTLIBRARIES = nsswitch.la static.la $(UMICH_LDAP_LIB) $(GUMS_MAPPING_LIB)
|
|
|
d322f0a |
# by this library.
|
|
|
d322f0a |
|
|
|
d322f0a |
libnfsidmap_la_SOURCES = libnfsidmap.c cfg.c strlcpy.c cfg.h nfsidmap_internal.h queue.h
|
|
|
d322f0a |
-libnfsidmap_la_CPPFLAGS = -DPATH_PLUGINS=\"$(pkglibdir)\"
|
|
|
d322f0a |
libnfsidmap_la_LDFLAGS = -version-info 3:0:3
|
|
|
d322f0a |
libnfsidmap_la_LIBADD = -ldl
|
|
|
d322f0a |
|
|
|
7a6d5b1 |
diff --git a/configure.in b/configure.in
|
|
|
7a6d5b1 |
index c105988..7ad3e5f 100644
|
|
|
7a6d5b1 |
--- a/configure.in
|
|
|
7a6d5b1 |
+++ b/configure.in
|
|
|
7a6d5b1 |
@@ -36,7 +36,20 @@ if test "x$enable_gums" = "xyes" ; then
|
|
|
7a6d5b1 |
fi
|
|
|
7a6d5b1 |
AM_CONDITIONAL(ENABLE_GUMS, test "x$enable_gums" = "xyes")
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
+#Where do the Plugins live
|
|
|
7a6d5b1 |
+AC_ARG_WITH(pluginpath,
|
|
|
7a6d5b1 |
+ [AS_HELP_STRING([--with-pluginpath=/foo],[Causes the library to look in /foo instead of /usr/lib/libnfsidmap for plugins
|
|
|
7a6d5b1 |
+ ])],
|
|
|
7a6d5b1 |
+ path_plugins=$withval,
|
|
|
7a6d5b1 |
+ path_plugins=""
|
|
|
7a6d5b1 |
+ )
|
|
|
7a6d5b1 |
+if test -n "$path_plugins" ; then
|
|
|
7a6d5b1 |
+ AC_DEFINE_UNQUOTED(PATH_PLUGINS, "$path_plugins",
|
|
|
7a6d5b1 |
+ [Define this to change the plugins path])
|
|
|
7a6d5b1 |
+fi
|
|
|
7a6d5b1 |
+AM_CONDITIONAL(PATH_PLUGINS, test -n "$path_plugins")
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
+AC_CONFIG_HEADERS([./config.h])
|
|
|
7a6d5b1 |
# Checks for header files.
|
|
|
7a6d5b1 |
AC_HEADER_STDC
|
|
|
7a6d5b1 |
AC_CHECK_HEADERS([stdlib.h string.h unistd.h errno.h])
|
|
|
7a6d5b1 |
diff --git a/libnfsidmap.c b/libnfsidmap.c
|
|
|
7a6d5b1 |
index 5dc2652..57bb6c3 100644
|
|
|
7a6d5b1 |
--- a/libnfsidmap.c
|
|
|
7a6d5b1 |
+++ b/libnfsidmap.c
|
|
|
7a6d5b1 |
@@ -36,6 +36,8 @@
|
|
|
7a6d5b1 |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
7a6d5b1 |
*/
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
+#include "config.h"
|
|
|
7a6d5b1 |
+
|
|
|
7a6d5b1 |
#include <sys/types.h>
|
|
|
7a6d5b1 |
#include <errno.h>
|
|
|
7a6d5b1 |
#include <unistd.h>
|
|
|
7a6d5b1 |
@@ -50,6 +52,7 @@
|
|
|
7a6d5b1 |
#include <syslog.h>
|
|
|
7a6d5b1 |
#include <stdarg.h>
|
|
|
7a6d5b1 |
#include <dlfcn.h>
|
|
|
7a6d5b1 |
+#include <ctype.h>
|
|
|
7a6d5b1 |
#include "nfsidmap.h"
|
|
|
7a6d5b1 |
#include "nfsidmap_internal.h"
|
|
|
7a6d5b1 |
#include "cfg.h"
|
|
|
7a6d5b1 |
@@ -207,7 +210,7 @@ out:
|
|
|
7a6d5b1 |
unload_plugins(plgns);
|
|
|
7a6d5b1 |
return ret;
|
|
|
7a6d5b1 |
}
|
|
|
7a6d5b1 |
-int nfs4_cleanup_name_mapping()
|
|
|
7a6d5b1 |
+void nfs4_cleanup_name_mapping()
|
|
|
7a6d5b1 |
{
|
|
|
7a6d5b1 |
if (nfs4_plugins)
|
|
|
7a6d5b1 |
unload_plugins(nfs4_plugins);
|
|
|
7a6d5b1 |
@@ -219,7 +222,6 @@ int nfs4_cleanup_name_mapping()
|
|
|
7a6d5b1 |
int nfs4_init_name_mapping(char *conffile)
|
|
|
7a6d5b1 |
{
|
|
|
7a6d5b1 |
int ret = -ENOENT;
|
|
|
7a6d5b1 |
- char *method;
|
|
|
7a6d5b1 |
int dflt = 0;
|
|
|
7a6d5b1 |
struct conf_list *nfs4_methods, *gss_methods;
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
@@ -244,7 +246,7 @@ int nfs4_init_name_mapping(char *conffile)
|
|
|
7a6d5b1 |
default_domain = IDMAPD_DEFAULT_DOMAIN;
|
|
|
7a6d5b1 |
}
|
|
|
7a6d5b1 |
}
|
|
|
7a6d5b1 |
- IDMAP_LOG(1, ("libnfsidmap: using%s domain: %s\n",
|
|
|
7a6d5b1 |
+ IDMAP_LOG(1, ("libnfsidmap: using%s domain: %s",
|
|
|
7a6d5b1 |
(dflt ? " (default)" : ""), default_domain));
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
/* Get list of "local equivalent" realms. Meaning the list of realms
|
|
|
7a6d5b1 |
@@ -272,9 +274,30 @@ int nfs4_init_name_mapping(char *conffile)
|
|
|
7a6d5b1 |
local_realms->cnt++;
|
|
|
7a6d5b1 |
}
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
+ if (idmap_verbosity >= 1) {
|
|
|
7a6d5b1 |
+ struct conf_list_node *r;
|
|
|
7a6d5b1 |
+ char *buf = NULL;
|
|
|
7a6d5b1 |
+ int siz=0;
|
|
|
7a6d5b1 |
+
|
|
|
7a6d5b1 |
+ if (local_realms) {
|
|
|
7a6d5b1 |
+ TAILQ_FOREACH(r, &local_realms->fields, link) {
|
|
|
7a6d5b1 |
+ siz += (strlen(r->field)+4);
|
|
|
7a6d5b1 |
+ }
|
|
|
7a6d5b1 |
+ buf = malloc(siz);
|
|
|
7a6d5b1 |
+ if (buf) {
|
|
|
7a6d5b1 |
+ TAILQ_FOREACH(r, &local_realms->fields, link) {
|
|
|
7a6d5b1 |
+ sprintf(buf, "'%s' ", r->field);
|
|
|
7a6d5b1 |
+ }
|
|
|
7a6d5b1 |
+ IDMAP_LOG(1, ("libnfsidmap: Realms list: %s", buf));
|
|
|
7a6d5b1 |
+ free(buf);
|
|
|
7a6d5b1 |
+ }
|
|
|
7a6d5b1 |
+ } else
|
|
|
7a6d5b1 |
+ IDMAP_LOG(1, ("libnfsidmap: Realms list: <NULL> "));
|
|
|
7a6d5b1 |
+ }
|
|
|
7a6d5b1 |
+
|
|
|
7a6d5b1 |
nfs4_methods = conf_get_list("Translation", "Method");
|
|
|
7a6d5b1 |
if (nfs4_methods) {
|
|
|
7a6d5b1 |
- IDMAP_LOG(1, ("libnfsidmap: processing 'Method' list\n"));
|
|
|
7a6d5b1 |
+ IDMAP_LOG(1, ("libnfsidmap: processing 'Method' list"));
|
|
|
7a6d5b1 |
if (load_plugins(nfs4_methods, &nfs4_plugins) == -1)
|
|
|
7a6d5b1 |
return -ENOENT;
|
|
|
7a6d5b1 |
} else {
|
|
|
7a6d5b1 |
@@ -292,7 +315,7 @@ int nfs4_init_name_mapping(char *conffile)
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
gss_methods = conf_get_list("Translation", "GSS-Methods");
|
|
|
7a6d5b1 |
if (gss_methods) {
|
|
|
7a6d5b1 |
- IDMAP_LOG(1, ("libnfsidmap: processing 'GSS-Methods' list\n"));
|
|
|
7a6d5b1 |
+ IDMAP_LOG(1, ("libnfsidmap: processing 'GSS-Methods' list"));
|
|
|
7a6d5b1 |
if (load_plugins(gss_methods, &gss_plugins) == -1)
|
|
|
7a6d5b1 |
goto out;
|
|
|
7a6d5b1 |
}
|
|
|
d322f0a |
diff --git a/nss.c b/nss.c
|
|
|
d322f0a |
index 04aff19..b2b1227 100644
|
|
|
d322f0a |
--- a/nss.c
|
|
|
d322f0a |
+++ b/nss.c
|
|
|
d322f0a |
@@ -141,7 +141,7 @@ static char *strip_domain(const char *name, const char *domain)
|
|
|
d322f0a |
if (c == NULL && domain == NULL) {
|
|
|
d322f0a |
len = strlen(name) + 1;
|
|
|
d322f0a |
} else {
|
|
|
d322f0a |
- if (domain && strcmp(c + 1, domain) != 0)
|
|
|
d322f0a |
+ if (domain && strcasecmp(c + 1, domain) != 0)
|
|
|
d322f0a |
goto out;
|
|
|
d322f0a |
len = c - name;
|
|
|
d322f0a |
}
|
|
|
7a6d5b1 |
diff --git a/umich_ldap.c b/umich_ldap.c
|
|
|
7a6d5b1 |
index f6204c3..f482b0a 100644
|
|
|
7a6d5b1 |
--- a/umich_ldap.c
|
|
|
7a6d5b1 |
+++ b/umich_ldap.c
|
|
|
7a6d5b1 |
@@ -1084,7 +1084,7 @@ get_canonical_hostname(const char *inname)
|
|
|
7a6d5b1 |
if (error) {
|
|
|
7a6d5b1 |
IDMAP_LOG(1, ("%s: getnameinfo for host '%s' failed (%d)\n",
|
|
|
7a6d5b1 |
__FUNCTION__, inname));
|
|
|
7a6d5b1 |
- goto out_err;
|
|
|
7a6d5b1 |
+ goto out_free;
|
|
|
7a6d5b1 |
}
|
|
|
7a6d5b1 |
return_name = strdup (tmphost);
|
|
|
7a6d5b1 |
|
|
|
7a6d5b1 |
@@ -1098,7 +1098,6 @@ static int
|
|
|
7a6d5b1 |
umichldap_init(void)
|
|
|
7a6d5b1 |
{
|
|
|
7a6d5b1 |
char *tssl, *canonicalize, *memberof;
|
|
|
7a6d5b1 |
- int missing_server = 0, missing_base = 0;
|
|
|
7a6d5b1 |
char missing_msg[128] = "";
|
|
|
7a6d5b1 |
char *server_in, *canon_name;
|
|
|
7a6d5b1 |
|