[nssldap] Re: Solaris 10: As soon as nscd is running getpwnam on a ldap account fails
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[nssldap] Re: Solaris 10: As soon as nscd is running getpwnam on a ldap account fails
- From: Thomas Glanzmann <thomas [at] glanzmann.de>
- To: nssldap [at] padl.com
- Subject: [nssldap] Re: Solaris 10: As soon as nscd is running getpwnam on a ldap account fails
- Date: Sun, 8 Jun 2008 18:06:11 +0200
Hello,
I used the opensolaris source browser to find some information about the
missing symbols:
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/mapfile-vers
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getauuser.c
nss_backend_t *
_nss_ldap_audit_user_constr(const char *dummy1,
const char *dummy2,
const char *dummy3,
const char *dummy4,
const char *dummy5)
{
return ((nss_backend_t *)_nss_ldap_constr(auuser_ops,
sizeof (auuser_ops)/sizeof (auuser_ops[0]), _AUUSER,
auuser_attrs, _nss_ldap_au2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/gethostent6.c
nss_backend_t *
_nss_ldap_ipnodes_constr(const char *dummy1, const char *dummy2,
const char *dummy3)
{
return ((nss_backend_t *)_nss_ldap_constr(ipnodes_ops,
sizeof (ipnodes_ops)/sizeof (ipnodes_ops[0]), _HOSTS6,
ipnodes_attrs, _nss_ldap_hosts2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getnetmasks.c
nss_backend_t *
_nss_ldap_netmasks_constr(const char *dummy1, const char *dummy2,
const char *dummy3)
{
return ((nss_backend_t *)_nss_ldap_constr(netmasks_ops,
sizeof (netmasks_ops)/sizeof (netmasks_ops[0]), _NETMASKS,
netmasks_attrs, _nss_ldap_netmasks2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getprinter.c
nss_backend_t *
_nss_ldap_printers_constr(const char *dummy1, const char *dummy2,
const char *dummy3)
{
return ((nss_backend_t *)_nss_ldap_constr(printers_ops,
sizeof (printers_ops)/sizeof (printers_ops[0]), _PRINTERS,
printer_attrs, _nss_ldap_printers2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getprofattr.c
nss_backend_t *
_nss_ldap_prof_attr_constr(const char *dummy1,
const char *dummy2,
const char *dummy3,
const char *dummy4,
const char *dummy5)
{
return ((nss_backend_t *)_nss_ldap_constr(profattr_ops,
sizeof (profattr_ops)/sizeof (profattr_ops[0]), _PROFATTR,
prof_attrs, _nss_ldap_prof2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getprojent.c
nss_backend_t *
_nss_ldap_project_constr(const char *dummy1, const char *dummy2,
const char *dummy3)
{
return (_nss_ldap_constr(project_ops,
sizeof (project_ops) / sizeof (project_ops[0]),
_PROJECT, project_attrs, _nss_ldap_proj2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getkeyent.c
nss_backend_t *
_nss_ldap_publickey_constr(const char *dummy1, const char *dummy2,
const char *dummy3)
{
return ((nss_backend_t *)_nss_ldap_constr(keys_ops,
sizeof (keys_ops)/sizeof (keys_ops[0]),
_PUBLICKEY, keys_attrs, _nss_ldap_key2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/tsol_getrhent.c
nss_backend_t *
_nss_ldap_tnrhdb_constr(const char *dummy1,
const char *dummy2,
const char *dummy3,
const char *dummy4,
const char *dummy5)
{
return ((nss_backend_t *)_nss_ldap_constr(tnrhdb_ops,
sizeof (tnrhdb_ops)/sizeof (tnrhdb_ops[0]), _TNRHDB,
tnrhdb_attrs, _nss_ldap_tnrhdb2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/tsol_gettpent.c
nss_backend_t *
_nss_ldap_tnrhtp_constr(const char *dummy1,
const char *dummy2,
const char *dummy3,
const char *dummy4,
const char *dummy5)
{
return ((nss_backend_t *)_nss_ldap_constr(tnrhtp_ops,
sizeof (tnrhtp_ops)/sizeof (tnrhtp_ops[0]), _TNRHTP,
tnrhtp_attrs, _nss_ldap_tnrhtp2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getuserattr.c
nss_backend_t *
_nss_ldap_user_attr_constr(const char *dummy1,
const char *dummy2,
const char *dummy3,
const char *dummy4,
const char *dummy5)
{
return ((nss_backend_t *)_nss_ldap_constr(userattr_ops,
sizeof (userattr_ops)/sizeof (userattr_ops[0]), _USERATTR,
user_attrs, _nss_ldap_user2str));
}
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/nsswitch/ldap/common/getexecattr.c
nss_backend_t *
_nss_ldap_exec_attr_constr(const char *dummy1,
const char *dummy2,
const char *dummy3,
const char *dummy4,
const char *dummy5,
const char *dummy6,
const char *dummy7)
{
#ifdef DEBUG
(void) fprintf(stdout,
"\n[getexecattr.c: _nss_ldap_exec_attr_constr]\n");
#endif
return ((nss_backend_t *)_nss_ldap_constr(execattr_ops,
sizeof (execattr_ops)/sizeof (execattr_ops[0]), _EXECATTR,
exec_attrs, _nss_ldap_exec2str));
}
after that I tried to implement the stubs, all returning ,,NULL'' however this
did not make nscd work. Here is my patch if someone want's to build up on top
of it.
Thomas
diff --git a/Makefile.am b/Makefile.am
index 4b05f13..dcb883e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,7 +21,7 @@ man_MANS = nss_ldap.5
nss_ldap_so_SOURCES = ldap-nss.c ldap-pwd.c ldap-grp.c ldap-netgrp.c
ldap-rpc.c \
ldap-hosts.c ldap-network.c ldap-proto.c ldap-spwd.c \
ldap-alias.c ldap-service.c ldap-schema.c ldap-ethers.c \
- ldap-bp.c ldap-automount.c util.c ltf.c snprintf.c resolve.c \
+ ldap-bp.c stubs.c ldap-automount.c util.c ltf.c snprintf.c resolve.c \
dnsconfig.c irs-nss.c pagectrl.c ldap-sldap.c ldap-init-krb5-cache.c
nss_ldap_so_LDFLAGS = @nss_ldap_so_LDFLAGS@
diff --git a/Makefile.in b/Makefile.in
index c5c098f..0c68864 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -68,7 +68,7 @@ am_nss_ldap_so_OBJECTS = ldap-nss.$(OBJEXT)
ldap-pwd.$(OBJEXT) \
ldap-hosts.$(OBJEXT) ldap-network.$(OBJEXT) \
ldap-proto.$(OBJEXT) ldap-spwd.$(OBJEXT) ldap-alias.$(OBJEXT) \
ldap-service.$(OBJEXT) ldap-schema.$(OBJEXT) \
- ldap-ethers.$(OBJEXT) ldap-bp.$(OBJEXT) \
+ ldap-ethers.$(OBJEXT) ldap-bp.$(OBJEXT) stubs.$(OBJEXT) \
ldap-automount.$(OBJEXT) util.$(OBJEXT) ltf.$(OBJEXT) \
snprintf.$(OBJEXT) resolve.$(OBJEXT) dnsconfig.$(OBJEXT) \
irs-nss.$(OBJEXT) pagectrl.$(OBJEXT) ldap-sldap.$(OBJEXT) \
@@ -211,7 +211,7 @@ man_MANS = nss_ldap.5
nss_ldap_so_SOURCES = ldap-nss.c ldap-pwd.c ldap-grp.c ldap-netgrp.c
ldap-rpc.c \
ldap-hosts.c ldap-network.c ldap-proto.c ldap-spwd.c \
ldap-alias.c ldap-service.c ldap-schema.c ldap-ethers.c \
- ldap-bp.c ldap-automount.c util.c ltf.c snprintf.c resolve.c \
+ ldap-bp.c stubs.c ldap-automount.c util.c ltf.c snprintf.c resolve.c \
dnsconfig.c irs-nss.c pagectrl.c ldap-sldap.c ldap-init-krb5-cache.c
NSS_LDAP_SOURCES = ldap-nss.c ldap-grp.c ldap-pwd.c ldap-netgrp.c
ldap-schema.c \
@@ -308,6 +308,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldap-alias.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldap-automount.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldap-bp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stubs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldap-ethers.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldap-grp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldap-hosts.Po@am__quote@
diff --git a/exports.solaris b/exports.solaris
index 3ad3bd4..0dcd056 100644
--- a/exports.solaris
+++ b/exports.solaris
@@ -13,6 +13,16 @@ nss_ldap.so.1 {
_nss_ldap_services_constr;
_nss_ldap_shadow_constr;
_nss_ldap_netgroup_constr;
+ _nss_ldap_exec_attr_constr;
+ _nss_ldap_ipnodes_constr;
+ _nss_ldap_netmasks_constr;
+ _nss_ldap_printers_constr;
+ _nss_ldap_prof_attr_constr;
+ _nss_ldap_project_constr;
+ _nss_ldap_publickey_constr;
+ _nss_ldap_tnrhdb_constr;
+ _nss_ldap_tnrhtp_constr;
+ _nss_ldap_user_attr_constr;
# libsldap library interfaces
__ns_ldap_getMappedAttributes;
__ns_ldap_getMappedObjectClass;
diff --git a/ldap-sldap.c b/ldap-sldap.c
index 5f8f85f..0af8b67 100644
--- a/ldap-sldap.c
+++ b/ldap-sldap.c
@@ -247,7 +247,9 @@ __ns_ldap_getParam (const ParamIndexType type, void ***data,
break;
}
+#if 0
debug ("<== __ns_ldap_getParam (ret=%s)", NS_LDAP_ERR2STR (ret));
+#endif
return ret;
}
@@ -566,8 +568,10 @@ __ns_ldap_parseEntry (LDAPMessage * msg, ldap_state_t *
state,
{
__ns_ldap_freeEntry (&entry);
cookie->ret = ret;
+#if 0
debug ("<== __ns_ldap_parseEntry (failed to init result: %s)",
NS_LDAP_ERR2STR (ret));
+#endif
return __ns_ldap_mapError (ret);
}
cookie->result->entry = entry;
@@ -597,7 +601,9 @@ __ns_ldap_parseEntry (LDAPMessage * msg, ldap_state_t *
state,
cookie->ret = ret;
+#if 0
debug ("<== __ns_ldap_parseEntry (ret=%s)", NS_LDAP_ERR2STR (ret));
+#endif
return __ns_ldap_mapError (ret);
}
@@ -1150,8 +1156,10 @@ __ns_ldap_firstEntry (const char *service,
*pCookie = cookie;
+#if 0
debug ("<== __ns_ldap_firstEntry ret=%s cookie=%p", NS_LDAP_ERR2STR (ret),
cookie);
+#endif
return ret;
}
@@ -1185,7 +1193,9 @@ __ns_ldap_nextEntry (void *_cookie,
_nss_ldap_leave ();
+#if 0
debug ("<== __ns_ldap_nextEntry ret=%s", NS_LDAP_ERR2STR (ret));
+#endif
return ret;
}
@@ -1273,7 +1283,9 @@ __ns_ldap_list (const char *map,
_nss_ldap_leave ();
+#if 0
debug ("<== __ns_ldap_list ret=%s", NS_LDAP_ERR2STR (ret));
+#endif
return ret;
}
diff --git a/stubs.c b/stubs.c
new file mode 100644
index 0000000..f1b5127
--- /dev/null
+++ b/stubs.c
@@ -0,0 +1,136 @@
+#include "config.h"
+
+#ifdef HAVE_PORT_BEFORE_H
+#include <port_before.h>
+#endif
+
+#if defined(HAVE_THREAD_H) && !defined(_AIX)
+#include <thread.h>
+#elif defined(HAVE_PTHREAD_H)
+#include <pthread.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <netdb.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#ifdef HAVE_LBER_H
+#include <lber.h>
+#endif
+#ifdef HAVE_LDAP_H
+#include <ldap.h>
+#endif
+
+#include "ldap-nss.h"
+#include "ldap-bp.h"
+#include "util.h"
+
+#ifdef HAVE_PORT_AFTER_H
+#include <port_after.h>
+#endif
+
+#ifdef HAVE_NSS_H
+static ent_context_t *bp_context = NULL;
+#endif
+
+nss_backend_t *
+_nss_ldap_audit_user_constr(const char *dummy1,
+const char *dummy2,
+const char *dummy3,
+const char *dummy4,
+const char *dummy5)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_ipnodes_constr(const char *dummy1, const char *dummy2,
+ const char *dummy3)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_netmasks_constr(const char *dummy1, const char *dummy2,
+ const char *dummy3)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_printers_constr(const char *dummy1, const char *dummy2,
+ const char *dummy3)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_prof_attr_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_project_constr(const char *dummy1, const char *dummy2,
+const char *dummy3)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_publickey_constr(const char *dummy1, const char *dummy2,
+ const char *dummy3)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_tnrhdb_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_tnrhtp_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_user_attr_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5)
+{
+ return NULL;
+}
+
+nss_backend_t *
+_nss_ldap_exec_attr_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5,
+ const char *dummy6,
+ const char *dummy7)
+{
+ return NULL;
+}
+
diff --git a/stubs.h b/stubs.h
new file mode 100644
index 0000000..903dd56
--- /dev/null
+++ b/stubs.h
@@ -0,0 +1,65 @@
+#ifndef _LDAP_NSS_LDAP_STUBS_H
+#define _LDAP_NSS_LDAP_STUBS_H
+
+nss_backend_t *
+_nss_ldap_audit_user_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5);
+
+nss_backend_t *
+_nss_ldap_ipnodes_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3);
+
+nss_backend_t *
+_nss_ldap_netmasks_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3);
+
+nss_backend_t *
+_nss_ldap_printers_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3);
+
+nss_backend_t *
+_nss_ldap_prof_attr_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5);
+
+nss_backend_t *
+_nss_ldap_project_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3);
+
+nss_backend_t *
+_nss_ldap_publickey_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3);
+
+
+nss_backend_t *
+_nss_ldap_tnrhdb_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5);
+
+nss_backend_t *
+_nss_ldap_tnrhtp_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5);
+
+nss_backend_t *
+_nss_ldap_user_attr_constr(const char *dummy1,
+ const char *dummy2,
+ const char *dummy3,
+ const char *dummy4,
+ const char *dummy5);
+
+#endif /* _LDAP_NSS_LDAP_STUBS_H */