[samba/f18] Fix passdb backend ldapsam as module.

asn asn at fedoraproject.org
Thu Feb 7 15:28:39 UTC 2013


commit 251eada7768f33745f8feedcd307e8f6c87032b2
Author: Andreas Schneider <asn at cryptomilk.org>
Date:   Thu Feb 7 16:05:43 2013 +0100

    Fix passdb backend ldapsam as module.
    
    resolves: #908353

 samba-4.0.3-fix_pdb_ldapsam.patch |  220 +++++++++++++++++++++++++++++++++++++
 samba.spec                        |    3 +
 2 files changed, 223 insertions(+), 0 deletions(-)
---
diff --git a/samba-4.0.3-fix_pdb_ldapsam.patch b/samba-4.0.3-fix_pdb_ldapsam.patch
new file mode 100644
index 0000000..75dca3a
--- /dev/null
+++ b/samba-4.0.3-fix_pdb_ldapsam.patch
@@ -0,0 +1,220 @@
+From 410b045c45006ae9c3f2bbcafb07d6ac8c615a56 Mon Sep 17 00:00:00 2001
+From: Andreas Schneider <asn at samba.org>
+Date: Mon, 28 Jan 2013 16:16:42 +0100
+Subject: [PATCH 1/3] Rename pdb_ldap to pdb_ldapsam
+
+This patch moves pdb_ldap to pdb_ldapsam unconditionally
+and makes possible to load ldapsam.so dynamically
+
+Reviewed-by: Alexander Bokovoy <ab at samba.org>
+---
+ source3/passdb/pdb_ipa.c     |  2 +-
+ source3/passdb/pdb_ldap.c    | 12 +++++++++---
+ source3/passdb/pdb_ldap.h    |  4 ++--
+ source3/passdb/pdb_nds.c     |  2 +-
+ source3/passdb/wscript_build |  6 +++---
+ source3/wscript              |  2 +-
+ 6 files changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/source3/passdb/pdb_ipa.c b/source3/passdb/pdb_ipa.c
+index d31b37f..a699aab 100644
+--- a/source3/passdb/pdb_ipa.c
++++ b/source3/passdb/pdb_ipa.c
+@@ -1446,7 +1446,7 @@ static NTSTATUS pdb_init_IPA_ldapsam(struct pdb_methods **pdb_method, const char
+ 	struct ldapsam_privates *ldap_state;
+ 	NTSTATUS status;
+ 
+-	status = pdb_init_ldapsam(pdb_method, location);
++	status = pdb_ldapsam_init_common(pdb_method, location);
+ 	if (!NT_STATUS_IS_OK(status)) {
+ 		return status;
+ 	}
+diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
+index ca35ef7..7ae9056 100644
+--- a/source3/passdb/pdb_ldap.c
++++ b/source3/passdb/pdb_ldap.c
+@@ -6462,7 +6462,8 @@ static NTSTATUS pdb_init_ldapsam_common(struct pdb_methods **pdb_method, const c
+  Initialise the normal mode for pdb_ldap
+  *********************************************************************/
+ 
+-NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location)
++NTSTATUS pdb_ldapsam_init_common(struct pdb_methods **pdb_method,
++				 const char *location)
+ {
+ 	NTSTATUS nt_status;
+ 	struct ldapsam_privates *ldap_state = NULL;
+@@ -6611,11 +6612,16 @@ NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location)
+ 	return NT_STATUS_OK;
+ }
+ 
+-NTSTATUS pdb_ldap_init(void)
++NTSTATUS pdb_ldapsam_init(void)
+ {
+ 	NTSTATUS nt_status;
+-	if (!NT_STATUS_IS_OK(nt_status = smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam", pdb_init_ldapsam)))
++
++	nt_status = smb_register_passdb(PASSDB_INTERFACE_VERSION,
++					"ldapsam",
++					pdb_ldapsam_init_common);
++	if (!NT_STATUS_IS_OK(nt_status)) {
+ 		return nt_status;
++	}
+ 
+ 	/* Let pdb_nds register backends */
+ 	pdb_nds_init();
+diff --git a/source3/passdb/pdb_ldap.h b/source3/passdb/pdb_ldap.h
+index 1372f33..0420314 100644
+--- a/source3/passdb/pdb_ldap.h
++++ b/source3/passdb/pdb_ldap.h
+@@ -29,8 +29,8 @@
+ /* The following definitions come from passdb/pdb_ldap.c  */
+ 
+ const char** get_userattr_list( TALLOC_CTX *mem_ctx, int schema_ver );
+-NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location);
+-NTSTATUS pdb_ldap_init(void);
++NTSTATUS pdb_ldapsam_init_common(struct pdb_methods **pdb_method, const char *location);
++NTSTATUS pdb_ldapsam_init(void);
+ int ldapsam_search_suffix_by_name(struct ldapsam_privates *ldap_state,
+                                   const char *user,
+                                   LDAPMessage ** result,
+diff --git a/source3/passdb/pdb_nds.c b/source3/passdb/pdb_nds.c
+index cce4937..d7c16da 100644
+--- a/source3/passdb/pdb_nds.c
++++ b/source3/passdb/pdb_nds.c
+@@ -878,7 +878,7 @@ static NTSTATUS pdb_init_NDS_ldapsam_common(struct pdb_methods **pdb_method, con
+ 
+ static NTSTATUS pdb_init_NDS_ldapsam(struct pdb_methods **pdb_method, const char *location)
+ {
+-	NTSTATUS nt_status = pdb_init_ldapsam(pdb_method, location);
++	NTSTATUS nt_status = pdb_ldapsam_init_common(pdb_method, location);
+ 
+ 	(*pdb_method)->name = "NDS_ldapsam";
+ 
+diff --git a/source3/passdb/wscript_build b/source3/passdb/wscript_build
+index 03a0df4..a6620cd 100644
+--- a/source3/passdb/wscript_build
++++ b/source3/passdb/wscript_build
+@@ -13,13 +13,13 @@ bld.SAMBA3_MODULE('pdb_tdbsam',
+                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('pdb_tdbsam'),
+                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('pdb_tdbsam'))
+ 
+-bld.SAMBA3_MODULE('pdb_ldap',
++bld.SAMBA3_MODULE('pdb_ldapsam',
+                  subsystem='pdb',
+                  deps='smbldap smbldaphelper',
+                  source=PDB_LDAP_SRC,
+                  init_function='',
+-                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('pdb_ldap'),
+-                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('pdb_ldap') and bld.CONFIG_SET('HAVE_LDAP'))
++                 internal_module=bld.SAMBA3_IS_STATIC_MODULE('pdb_ldapsam'),
++                 enabled=bld.SAMBA3_IS_ENABLED_MODULE('pdb_ldapsam') and bld.CONFIG_SET('HAVE_LDAP'))
+ 
+ bld.SAMBA3_MODULE('pdb_smbpasswd',
+                  subsystem='pdb',
+diff --git a/source3/wscript b/source3/wscript
+index 097cd83..34fccb1 100644
+--- a/source3/wscript
++++ b/source3/wscript
+@@ -1734,7 +1734,7 @@ main() {
+         default_shared_modules.extend(TO_LIST('vfs_aio_linux'))
+ 
+     if conf.CONFIG_SET('HAVE_LDAP'):
+-        default_static_modules.extend(TO_LIST('pdb_ldap idmap_ldap'))
++        default_static_modules.extend(TO_LIST('pdb_ldapsam idmap_ldap'))
+ 
+     if conf.CONFIG_SET('DARWINOS'):
+         default_static_modules.extend(TO_LIST('charset_macosxfs'))
+-- 
+1.8.1.2
+
+From 8c7b0ab9b3ae07574c6b5c5ba5888c3f329c9e02 Mon Sep 17 00:00:00 2001
+From: Alexander Bokovoy <ab at samba.org>
+Date: Wed, 6 Feb 2013 10:43:16 +0200
+Subject: [PATCH 2/3] source3/wscript: support 'pdb_ldap' module in configure
+
+While PASSDB module ldapsam is called pdb_ldapsam internally,
+support specifying 'pdb_ldap' during configure step.
+
+This should make transition to pdb_ldapsam transparent to distributions.
+
+Reviewed-by: Andreas Schneider <asn at samba.org>
+---
+ source3/wscript | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/source3/wscript b/source3/wscript
+index 34fccb1..194d712 100644
+--- a/source3/wscript
++++ b/source3/wscript
+@@ -1745,6 +1745,19 @@ main() {
+     explicit_shared_modules = TO_LIST(Options.options.shared_modules, delimiter=',')
+     explicit_static_modules = TO_LIST(Options.options.static_modules, delimiter=',')
+ 
++    def replace_list_item(lst, item, value):
++        try:
++            idx = lst.index(item)
++            lst[idx] = value
++        except:
++            pass
++    # PDB module file name should have the same name as module registers itself
++    # In Autoconf build we export LDAP passdb module as ldapsam but WAF build
++    # was always exporting pdb_ldap. In order to support existing packages
++    # allow referring to pdb_ldapsam as pdb_ldap but use proper name internally.
++    replace_list_item(explicit_shared_modules, 'pdb_ldap', 'pdb_ldapsam')
++    replace_list_item(explicit_static_modules, 'pdb_ldap', 'pdb_ldapsam')
++
+     final_static_modules = default_static_modules
+     final_shared_modules = default_shared_modules
+ 
+-- 
+1.8.1.2
+
+From 2b070b226926798fc544f6867721f57a5ec7075c Mon Sep 17 00:00:00 2001
+From: Alexander Bokovoy <ab at samba.org>
+Date: Wed, 6 Feb 2013 12:22:12 +0200
+Subject: [PATCH 3/3] autoconf: rename pdb_ldap module to pdb_ldapsam
+
+Reviewed-by: Andreas Schneider <asn at samba.org>
+
+Autobuild-User(master): Alexander Bokovoy <ab at samba.org>
+Autobuild-Date(master): Wed Feb  6 13:32:53 CET 2013 on sn-devel-104
+---
+ source3/configure.in | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/source3/configure.in b/source3/configure.in
+index d0c2a48..a4e0763 100644
+--- a/source3/configure.in
++++ b/source3/configure.in
+@@ -3276,7 +3276,7 @@ if test x"$with_ldap_support" != x"no"; then
+   if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
+     AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
+     CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
+-    default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
++    default_static_modules="$default_static_modules pdb_ldapsam idmap_ldap";
+     default_shared_modules="$default_shared_modules";
+     SMBLDAP="lib/smbldap.o"
+     with_ldap_support=yes
+@@ -6353,13 +6353,18 @@ AC_ARG_WITH(shared-modules,
+ 	done
+ fi ])
+ 
++# additionally, support pdb_ldap -> pdb_ldapsam replacement
++if test x"$MODULE_pdb_ldap" != x ; then
++	MODULE_pdb_ldapsam="$MODULE_pdb_ldap"
++fi
++
+ if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \
+ 		x"$MODULE_vfs_notify_fam" = xSTATIC ; then
+ 	SMBD_FAM_LIBS="$SMB_FAM_LIBS"
+ 	AC_SUBST(SMBD_FAM_LIBS)
+ fi
+ 
+-SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o,
++SMB_MODULE(pdb_ldapsam, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o,
+ 		   "bin/ldapsam.$SHLIBEXT", PDB,
+ 		   [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
+ SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
+-- 
+1.8.1.2
+
diff --git a/samba.spec b/samba.spec
index 82dcaba..e9cf307 100644
--- a/samba.spec
+++ b/samba.spec
@@ -77,6 +77,7 @@ Source200: README.dc
 Source201: README.downgrade
 
 Patch0: samba-4.0.3-fix_pidl_with_gcc48.patch
+Patch1: samba-4.0.3-fix_pdb_ldapsam.patch
 
 BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 
@@ -433,6 +434,7 @@ the local kerberos library to use the same KDC as samba and winbind use
 %setup -q -n samba-%{version}%{pre_release}
 
 %patch0 -p1 -b .pidl_gcc48
+%patch1 -p1 -b .pdb_ldapsam
 
 %build
 %global _talloc_lib ,talloc,pytalloc,pytalloc-util
@@ -1346,6 +1348,7 @@ rm -rf %{buildroot}
 - Update to Samba 4.0.3.
 - resolves: #907544 - Add unowned directory /usr/lib64/samba.
 - resolves: #906517 - Fix pidl code generation with gcc 4.8.
+- resolves: #908353 - Fix passdb backend ldapsam as module.
 
 * Wed Jan 30 2013 - Andreas Schneider <asn at redhat.com> - 2:4.0.2-1
 - Update to Samba 4.0.2.


More information about the scm-commits mailing list