[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Fri Apr 21 23:18:05 UTC 2017
The branch, master has been updated
via 306783d lib: modules: Change XXX_init interface from XXX_init(void) to XXX_init(TALLOC_CTX *)
from 9342b3e pyrpc: Fix segfault in ClientConnection
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 306783d6f5d577a0b8bd31d659d8c802f22f0333
Author: Jeremy Allison <jra at samba.org>
Date: Thu Apr 20 12:24:43 2017 -0700
lib: modules: Change XXX_init interface from XXX_init(void) to XXX_init(TALLOC_CTX *)
Not currently used - no logic changes inside.
This will make it possible to pass down a long-lived talloc
context from the loading function for modules to use instead
of having them internally all use talloc_autofree_context()
which is a hidden global.
Updated all known module interface numbers, and added a
WHATSNEW.
Signed-off-by: Jeremy Allison <jra at samba.org>
Signed-off-by: Ralph Böhme <slow at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Sat Apr 22 01:17:00 CEST 2017 on sn-devel-144
-----------------------------------------------------------------------
Summary of changes:
WHATSNEW.txt | 19 +++++++++++++++++++
auth/gensec/external.c | 4 ++--
auth/gensec/gensec.h | 3 ++-
auth/gensec/gensec_start.c | 6 +++---
auth/gensec/ncalrpc.c | 4 ++--
auth/gensec/schannel.c | 4 ++--
auth/gensec/spnego.c | 4 ++--
auth/ntlmssp/ntlmssp.c | 2 +-
auth/ntlmssp/ntlmssp.h | 2 +-
buildtools/wafsamba/samba_patterns.py | 3 +++
docs-xml/Samba3-Developers-Guide/modules.xml | 14 ++++++++++++--
examples/VFS/shadow_copy_test.c | 2 +-
examples/VFS/skel_opaque.c | 2 +-
examples/VFS/skel_transparent.c | 2 +-
examples/auth/auth_skel.c | 4 ++--
examples/pdb/test.c | 2 +-
file_server/file_server.c | 4 ++--
lib/util/modules.c | 6 +++---
lib/util/samba_modules.h | 6 +++---
libcli/echo/tests/echo.c | 4 ++--
pidl/lib/Parse/Pidl/Samba4/NDR/Server.pm | 4 ++--
source3/auth/auth.c | 2 +-
source3/auth/auth_builtin.c | 2 +-
source3/auth/auth_domain.c | 2 +-
source3/auth/auth_sam.c | 2 +-
source3/auth/auth_samba4.c | 4 ++--
source3/auth/auth_script.c | 4 ++--
source3/auth/auth_unix.c | 2 +-
source3/auth/auth_winbind.c | 2 +-
source3/auth/proto.h | 12 ++++++------
source3/include/auth.h | 3 ++-
source3/include/idmap.h | 3 ++-
source3/include/nss_info.h | 2 +-
source3/include/passdb.h | 3 ++-
source3/include/smb_perfcount.h | 3 ++-
source3/include/vfs.h | 3 ++-
source3/modules/perfcount_test.c | 2 +-
source3/modules/vfs_acl_tdb.c | 2 +-
source3/modules/vfs_acl_xattr.c | 2 +-
source3/modules/vfs_afsacl.c | 4 ++--
source3/modules/vfs_aio_fork.c | 4 ++--
source3/modules/vfs_aio_linux.c | 2 +-
source3/modules/vfs_aio_pthread.c | 4 ++--
source3/modules/vfs_aixacl.c | 4 ++--
source3/modules/vfs_aixacl2.c | 4 ++--
source3/modules/vfs_audit.c | 2 +-
source3/modules/vfs_btrfs.c | 4 ++--
source3/modules/vfs_cacheprime.c | 4 ++--
source3/modules/vfs_cap.c | 4 ++--
source3/modules/vfs_catia.c | 2 +-
source3/modules/vfs_ceph.c | 4 ++--
source3/modules/vfs_commit.c | 4 ++--
source3/modules/vfs_crossrename.c | 4 ++--
source3/modules/vfs_default.c | 4 ++--
source3/modules/vfs_default_quota.c | 4 ++--
source3/modules/vfs_dfs_samba4.c | 4 ++--
source3/modules/vfs_dirsort.c | 2 +-
source3/modules/vfs_expand_msdfs.c | 4 ++--
source3/modules/vfs_extd_audit.c | 2 +-
source3/modules/vfs_fake_acls.c | 4 ++--
source3/modules/vfs_fake_dfq.c | 2 +-
source3/modules/vfs_fake_perms.c | 4 ++--
source3/modules/vfs_fileid.c | 4 ++--
source3/modules/vfs_fruit.c | 4 ++--
source3/modules/vfs_full_audit.c | 2 +-
source3/modules/vfs_glusterfs.c | 4 ++--
source3/modules/vfs_gpfs.c | 4 ++--
source3/modules/vfs_hpuxacl.c | 2 +-
source3/modules/vfs_linux_xfs_sgid.c | 4 ++--
source3/modules/vfs_media_harmony.c | 4 ++--
source3/modules/vfs_netatalk.c | 4 ++--
source3/modules/vfs_nfs4acl_xattr.c | 4 ++--
source3/modules/vfs_offline.c | 4 ++--
source3/modules/vfs_posix_eadb.c | 2 +-
source3/modules/vfs_posixacl.c | 4 ++--
source3/modules/vfs_posixacl.h | 2 +-
source3/modules/vfs_prealloc.c | 4 ++--
source3/modules/vfs_preopen.c | 4 ++--
source3/modules/vfs_readahead.c | 4 ++--
source3/modules/vfs_readonly.c | 4 ++--
source3/modules/vfs_recycle.c | 4 ++--
source3/modules/vfs_shadow_copy.c | 4 ++--
source3/modules/vfs_shadow_copy2.c | 4 ++--
source3/modules/vfs_shell_snap.c | 4 ++--
source3/modules/vfs_snapper.c | 4 ++--
source3/modules/vfs_solarisacl.c | 4 ++--
source3/modules/vfs_streams_depot.c | 4 ++--
source3/modules/vfs_streams_xattr.c | 4 ++--
source3/modules/vfs_syncops.c | 2 +-
source3/modules/vfs_time_audit.c | 4 ++--
source3/modules/vfs_tru64acl.c | 4 ++--
source3/modules/vfs_tsmsm.c | 4 ++--
source3/modules/vfs_unityed_media.c | 4 ++--
source3/modules/vfs_vxfs.c | 4 ++--
source3/modules/vfs_worm.c | 4 ++--
source3/modules/vfs_xattr_tdb.c | 4 ++--
source3/modules/vfs_zfsacl.c | 4 ++--
source3/passdb/pdb_interface.c | 2 +-
source3/passdb/pdb_ldap.c | 4 ++--
source3/passdb/pdb_ldap.h | 2 +-
source3/passdb/pdb_nds.c | 2 +-
source3/passdb/pdb_nds.h | 2 +-
source3/passdb/pdb_samba_dsdb.c | 4 ++--
source3/passdb/pdb_smbpasswd.c | 2 +-
source3/passdb/pdb_smbpasswd.h | 2 +-
source3/passdb/pdb_tdb.c | 2 +-
source3/passdb/pdb_tdb.h | 2 +-
source3/rpc_server/mdssvc/srv_mdssvc_nt.c | 2 +-
source3/rpc_server/rpc_service_setup.c | 4 ++--
source3/smbd/vfs.c | 2 +-
source3/winbindd/idmap.c | 2 +-
source3/winbindd/idmap_ad.c | 4 ++--
source3/winbindd/idmap_ad_nss.c | 2 +-
source3/winbindd/idmap_autorid.c | 2 +-
source3/winbindd/idmap_hash/idmap_hash.c | 2 +-
source3/winbindd/idmap_ldap.c | 4 ++--
source3/winbindd/idmap_nss.c | 2 +-
source3/winbindd/idmap_passdb.c | 2 +-
source3/winbindd/idmap_proto.h | 8 ++++----
source3/winbindd/idmap_rfc2307.c | 2 +-
source3/winbindd/idmap_rid.c | 2 +-
source3/winbindd/idmap_script.c | 2 +-
source3/winbindd/idmap_tdb.c | 2 +-
source3/winbindd/idmap_tdb2.c | 2 +-
source3/winbindd/nss_info.c | 2 +-
source3/winbindd/nss_info_template.c | 2 +-
source3/wscript | 6 +++---
source4/auth/auth.h | 2 +-
source4/auth/gensec/gensec_gssapi.c | 4 ++--
source4/auth/gensec/gensec_krb5.c | 4 ++--
source4/auth/ntlm/auth.c | 4 ++--
source4/auth/ntlm/auth_anonymous.c | 4 ++--
source4/auth/ntlm/auth_developer.c | 4 ++--
source4/auth/ntlm/auth_sam.c | 4 ++--
source4/auth/ntlm/auth_server_service.c | 2 +-
source4/auth/ntlm/auth_unix.c | 4 ++--
source4/auth/ntlm/auth_winbind.c | 4 ++--
source4/cldap_server/cldap_server.c | 4 ++--
source4/dns_server/dns_server.c | 4 ++--
source4/dsdb/dns/dns_update.c | 4 ++--
source4/dsdb/kcc/kcc_service.c | 2 +-
source4/dsdb/repl/drepl_service.c | 2 +-
source4/echo_server/echo_server.c | 4 ++--
source4/kdc/kdc-heimdal.c | 4 ++--
source4/ldap_server/ldap_server.c | 2 +-
source4/lib/com/classes/simple.c | 4 ++--
source4/lib/http/gensec/basic.c | 4 ++--
source4/lib/http/gensec/ntlm.c | 4 ++--
source4/nbt_server/nbt_server.c | 4 ++--
source4/ntp_signd/ntp_signd.c | 4 ++--
source4/ntvfs/cifs/vfs_cifs.c | 4 ++--
source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c | 2 +-
source4/ntvfs/ipc/vfs_ipc.c | 2 +-
source4/ntvfs/nbench/vfs_nbench.c | 4 ++--
source4/ntvfs/ntvfs_base.c | 6 +++---
source4/ntvfs/posix/pvfs_acl.c | 6 +++---
source4/ntvfs/posix/pvfs_acl_nfs4.c | 4 ++--
source4/ntvfs/posix/pvfs_acl_xattr.c | 4 ++--
source4/ntvfs/posix/vfs_posix.c | 2 +-
source4/ntvfs/print/vfs_print.c | 4 ++--
source4/ntvfs/simple/vfs_simple.c | 2 +-
source4/ntvfs/smb2/vfs_smb2.c | 4 ++--
source4/ntvfs/sysdep/inotify.c | 4 ++--
source4/ntvfs/sysdep/sys_lease.c | 4 ++--
source4/ntvfs/sysdep/sys_lease_linux.c | 4 ++--
source4/ntvfs/sysdep/sys_notify.c | 4 ++--
source4/ntvfs/unixuid/vfs_unixuid.c | 4 ++--
source4/param/share.c | 4 ++--
source4/param/share_classic.c | 4 ++--
source4/param/share_ldb.c | 4 ++--
source4/rpc_server/dcerpc_server.c | 6 +++---
source4/rpc_server/lsa/dcesrv_lsa.c | 6 +++---
source4/rpc_server/service_rpc.c | 4 ++--
source4/smb_server/service_smb.c | 2 +-
source4/smbd/process_model.c | 6 +++---
source4/smbd/process_single.c | 4 ++--
source4/smbd/process_standard.c | 4 ++--
source4/smbd/server.c | 6 +++---
source4/torture/basic/base.c | 2 +-
source4/torture/dfs/domaindfs.c | 2 +-
source4/torture/dns/dlz_bind9.c | 4 ++--
source4/torture/dns/internal_dns.c | 4 ++--
source4/torture/drs/drs_init.c | 2 +-
source4/torture/krb5/kdc-heimdal.c | 2 +-
source4/torture/krb5/kdc-mit.c | 2 +-
source4/torture/ldap/common.c | 2 +-
source4/torture/libnet/libnet.c | 2 +-
source4/torture/libnetapi/libnetapi.c | 2 +-
source4/torture/libsmbclient/libsmbclient.c | 2 +-
source4/torture/local/local.c | 2 +-
source4/torture/nbench/nbench.c | 2 +-
source4/torture/nbt/nbt.c | 2 +-
source4/torture/ntp/ntp_signd.c | 2 +-
source4/torture/rap/rap.c | 2 +-
source4/torture/raw/raw.c | 2 +-
source4/torture/rpc/rpc.c | 2 +-
source4/torture/smb2/smb2.c | 2 +-
source4/torture/smbtorture.c | 2 +-
source4/torture/torture.c | 6 +++---
source4/torture/unix/unix.c | 2 +-
source4/torture/vfs/vfs.c | 2 +-
source4/torture/winbind/winbind.c | 2 +-
source4/web_server/web_server.c | 4 ++--
source4/winbind/winbindd.c | 4 ++--
source4/wrepl_server/wrepl_server.c | 2 +-
205 files changed, 373 insertions(+), 335 deletions(-)
Changeset truncated at 500 lines:
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 5e6d159..d9324e7 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -60,6 +60,25 @@ was using this call please raise the issue on
samba-technical at lists.samba.org in order to design a supported
way of obtaining the same functionality.
+Change of loadable module interface
+-----------------------------------
+
+The _init function of all loadable modules in Samba has changed
+from:
+
+NTSTATUS _init(void);
+
+to:
+
+NTSTATUS _init(TALLOC_CTX *);
+
+This allows a program loading a module to pass in a long-lived
+talloc context (which must be guaranteed to be alive for the
+lifetime of the module). This allows modules to avoid use of
+the talloc_autofree_context() (which is inherently thread-unsafe)
+and still be valgrind-clean on exit. Modules that don't need to
+free long-lived data on exist should use the NULL talloc context.
+
KNOWN ISSUES
============
diff --git a/auth/gensec/external.c b/auth/gensec/external.c
index 9c17888..92295bc 100644
--- a/auth/gensec/external.c
+++ b/auth/gensec/external.c
@@ -32,7 +32,7 @@
* layer is already mutually authenticated.
*/
-NTSTATUS gensec_external_init(void);
+NTSTATUS gensec_external_init(TALLOC_CTX *ctx);
static NTSTATUS gensec_external_start(struct gensec_security *gensec_security)
{
@@ -111,7 +111,7 @@ static const struct gensec_security_ops gensec_external_ops = {
};
-NTSTATUS gensec_external_init(void)
+NTSTATUS gensec_external_init(TALLOC_CTX *ctx)
{
NTSTATUS ret;
diff --git a/auth/gensec/gensec.h b/auth/gensec/gensec.h
index 6764ee5..3924a7c 100644
--- a/auth/gensec/gensec.h
+++ b/auth/gensec/gensec.h
@@ -107,7 +107,8 @@ struct gensec_settings {
struct gensec_security_ops;
struct gensec_security_ops_wrapper;
-#define GENSEC_INTERFACE_VERSION 0
+/* Change to 1, loadable modules now take a TALLOC_CTX * init() parameter. */
+#define GENSEC_INTERFACE_VERSION 1
/* this structure is used by backends to determine the size of some critical types */
struct gensec_critical_sizes;
diff --git a/auth/gensec/gensec_start.c b/auth/gensec/gensec_start.c
index 31a5559..83a86cf 100644
--- a/auth/gensec/gensec_start.c
+++ b/auth/gensec/gensec_start.c
@@ -956,7 +956,7 @@ bool gensec_setting_bool(struct gensec_settings *settings, const char *mechanism
_PUBLIC_ NTSTATUS gensec_init(void)
{
static bool initialized = false;
-#define _MODULE_PROTO(init) extern NTSTATUS init(void);
+#define _MODULE_PROTO(init) extern NTSTATUS init(TALLOC_CTX *);
#ifdef STATIC_gensec_MODULES
STATIC_gensec_MODULES_PROTO;
init_module_fn static_init[] = { STATIC_gensec_MODULES };
@@ -970,8 +970,8 @@ _PUBLIC_ NTSTATUS gensec_init(void)
shared_init = load_samba_modules(NULL, "gensec");
- run_init_functions(static_init);
- run_init_functions(shared_init);
+ run_init_functions(NULL, static_init);
+ run_init_functions(NULL, shared_init);
talloc_free(shared_init);
diff --git a/auth/gensec/ncalrpc.c b/auth/gensec/ncalrpc.c
index e6f33f3..8916ef5 100644
--- a/auth/gensec/ncalrpc.c
+++ b/auth/gensec/ncalrpc.c
@@ -30,7 +30,7 @@
#include "lib/param/param.h"
#include "tsocket.h"
-_PUBLIC_ NTSTATUS gensec_ncalrpc_as_system_init(void);
+_PUBLIC_ NTSTATUS gensec_ncalrpc_as_system_init(TALLOC_CTX *ctx);
struct gensec_ncalrpc_state {
enum {
@@ -338,7 +338,7 @@ static const struct gensec_security_ops gensec_ncalrpc_security_ops = {
.priority = GENSEC_EXTERNAL,
};
-_PUBLIC_ NTSTATUS gensec_ncalrpc_as_system_init(void)
+_PUBLIC_ NTSTATUS gensec_ncalrpc_as_system_init(TALLOC_CTX *ctx)
{
NTSTATUS status;
diff --git a/auth/gensec/schannel.c b/auth/gensec/schannel.c
index 1b99bb7..bf169d4 100644
--- a/auth/gensec/schannel.c
+++ b/auth/gensec/schannel.c
@@ -441,7 +441,7 @@ static NTSTATUS netsec_outgoing_packet(struct schannel_state *state,
return NT_STATUS_OK;
}
-_PUBLIC_ NTSTATUS gensec_schannel_init(void);
+_PUBLIC_ NTSTATUS gensec_schannel_init(TALLOC_CTX *ctx);
static size_t schannel_sig_size(struct gensec_security *gensec_security, size_t data_size)
{
@@ -849,7 +849,7 @@ static const struct gensec_security_ops gensec_schannel_security_ops = {
.priority = GENSEC_SCHANNEL
};
-_PUBLIC_ NTSTATUS gensec_schannel_init(void)
+_PUBLIC_ NTSTATUS gensec_schannel_init(TALLOC_CTX *ctx)
{
NTSTATUS ret;
ret = gensec_register(&gensec_schannel_security_ops);
diff --git a/auth/gensec/spnego.c b/auth/gensec/spnego.c
index 017181a..4b3edc6 100644
--- a/auth/gensec/spnego.c
+++ b/auth/gensec/spnego.c
@@ -34,7 +34,7 @@
#undef strcasecmp
-_PUBLIC_ NTSTATUS gensec_spnego_init(void);
+_PUBLIC_ NTSTATUS gensec_spnego_init(TALLOC_CTX *ctx);
enum spnego_state_position {
SPNEGO_SERVER_START,
@@ -1694,7 +1694,7 @@ static const struct gensec_security_ops gensec_spnego_security_ops = {
.priority = GENSEC_SPNEGO
};
-_PUBLIC_ NTSTATUS gensec_spnego_init(void)
+_PUBLIC_ NTSTATUS gensec_spnego_init(TALLOC_CTX *ctx)
{
NTSTATUS ret;
ret = gensec_register(&gensec_spnego_security_ops);
diff --git a/auth/ntlmssp/ntlmssp.c b/auth/ntlmssp/ntlmssp.c
index 6f7c089..ec2f6d9 100644
--- a/auth/ntlmssp/ntlmssp.c
+++ b/auth/ntlmssp/ntlmssp.c
@@ -252,7 +252,7 @@ static const struct gensec_security_ops gensec_ntlmssp_resume_ccache_ops = {
.priority = GENSEC_NTLMSSP
};
-_PUBLIC_ NTSTATUS gensec_ntlmssp_init(void)
+_PUBLIC_ NTSTATUS gensec_ntlmssp_init(TALLOC_CTX *ctx)
{
NTSTATUS ret;
diff --git a/auth/ntlmssp/ntlmssp.h b/auth/ntlmssp/ntlmssp.h
index 2412768..658d3fa 100644
--- a/auth/ntlmssp/ntlmssp.h
+++ b/auth/ntlmssp/ntlmssp.h
@@ -145,7 +145,7 @@ bool ntlmssp_blob_matches_magic(const DATA_BLOB *blob);
/* The following definitions come from auth/ntlmssp/gensec_ntlmssp.c */
-NTSTATUS gensec_ntlmssp_init(void);
+NTSTATUS gensec_ntlmssp_init(TALLOC_CTX *ctx);
uint32_t gensec_ntlmssp_neg_flags(struct gensec_security *gensec_security);
const char *gensec_ntlmssp_server_domain(struct gensec_security *gensec_security);
diff --git a/buildtools/wafsamba/samba_patterns.py b/buildtools/wafsamba/samba_patterns.py
index ceca2cc..0481520 100644
--- a/buildtools/wafsamba/samba_patterns.py
+++ b/buildtools/wafsamba/samba_patterns.py
@@ -178,6 +178,9 @@ def write_build_options(task):
keys_header_other.append(key)
else:
keys_option_have.append(key)
+ elif key.startswith("static_init_"):
+ l = key.split("(")
+ keys_misc.append(l[0])
else:
keys_misc.append(key)
diff --git a/docs-xml/Samba3-Developers-Guide/modules.xml b/docs-xml/Samba3-Developers-Guide/modules.xml
index a74c176..f0d19f1 100644
--- a/docs-xml/Samba3-Developers-Guide/modules.xml
+++ b/docs-xml/Samba3-Developers-Guide/modules.xml
@@ -101,7 +101,7 @@ The prototype for these functions is:
</para>
<para><programlisting>
-NTSTATUS init_module(void);
+NTSTATUS init_module(TALLOC_CTX *);
</programlisting></para>
<para>This function should call one or more
@@ -111,7 +111,7 @@ NT_STATUS_UNSUCCESSFUL or a more useful nt error code on failure.</para>
<para>For example, pdb_ldap_init() contains: </para>
<para><programlisting>
-NTSTATUS pdb_ldap_init(void)
+NTSTATUS pdb_ldap_init(TALLOC_CTX *)
{
smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam", pdb_init_ldapsam);
smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam_nua", pdb_init_ldapsam_nua);
@@ -119,6 +119,16 @@ smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam_nua", pdb_init_ldapsam_nu
}
</programlisting></para>
+<para>
+The TALLOC_CTX pointer passed as a parameter must be a long-lived context,
+that will stay around for as long as the program that loads the module
+exists. It allows the caller to taloc_free any long lived data the
+module choses to place on this context on program exit (giving a cleaner
+valgrind trace). It should be used by modules in place of talloc_autofree_context(),
+use of which makes programs thread-unsafe. Modules that don't care about
+free on exist should use the NULL talloc context.
+</para>
+
<sect2>
<title>Static/Shared selection in configure.in</title>
diff --git a/examples/VFS/shadow_copy_test.c b/examples/VFS/shadow_copy_test.c
index 05d6e16..48bf9d5 100644
--- a/examples/VFS/shadow_copy_test.c
+++ b/examples/VFS/shadow_copy_test.c
@@ -84,7 +84,7 @@ static struct vfs_fn_pointers vfs_test_shadow_copy_fns = {
};
static_decl_vfs;
-NTSTATUS vfs_shadow_copy_test_init(void)
+NTSTATUS vfs_shadow_copy_test_init(TALLOC_CTX *ctx)
{
return smb_register_vfs(SMB_VFS_INTERFACE_VERSION,
"shadow_copy_test",
diff --git a/examples/VFS/skel_opaque.c b/examples/VFS/skel_opaque.c
index 9479595..ffd951c 100644
--- a/examples/VFS/skel_opaque.c
+++ b/examples/VFS/skel_opaque.c
@@ -994,7 +994,7 @@ struct vfs_fn_pointers skel_opaque_fns = {
};
static_decl_vfs;
-NTSTATUS vfs_skel_opaque_init(void)
+NTSTATUS vfs_skel_opaque_init(TALLOC_CTX *ctx)
{
return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "skel_opaque",
&skel_opaque_fns);
diff --git a/examples/VFS/skel_transparent.c b/examples/VFS/skel_transparent.c
index f601312..afadbc1 100644
--- a/examples/VFS/skel_transparent.c
+++ b/examples/VFS/skel_transparent.c
@@ -1119,7 +1119,7 @@ struct vfs_fn_pointers skel_transparent_fns = {
};
static_decl_vfs;
-NTSTATUS vfs_skel_transparent_init(void)
+NTSTATUS vfs_skel_transparent_init(TALLOC_CTX *ctx)
{
return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "skel_transparent",
&skel_transparent_fns);
diff --git a/examples/auth/auth_skel.c b/examples/auth/auth_skel.c
index 3f3379f..6abd5ad 100644
--- a/examples/auth/auth_skel.c
+++ b/examples/auth/auth_skel.c
@@ -67,8 +67,8 @@ static NTSTATUS auth_init_skel(struct auth_context *auth_context, const char *pa
return NT_STATUS_OK;
}
-NTSTATUS auth_skel_init(void);
-NTSTATUS auth_skel_init(void)
+NTSTATUS auth_skel_init(TALLOC_CTX *ctx);
+NTSTATUS auth_skel_init(TALLOC_CTX *ctx)
{
return smb_register_auth(AUTH_INTERFACE_VERSION, "skel", auth_init_skel);
}
diff --git a/examples/pdb/test.c b/examples/pdb/test.c
index 6d68d87..a5e7dac 100644
--- a/examples/pdb/test.c
+++ b/examples/pdb/test.c
@@ -108,7 +108,7 @@ static NTSTATUS testsam_init(struct pdb_methods **pdb_method, const char *locati
}
static_decl_pdb;
-NTSTATUS pdb_test_init(void)
+NTSTATUS pdb_test_init(TALLOC_CTX *ctx)
{
return smb_register_passdb(PASSDB_INTERFACE_VERSION, "testsam",
testsam_init);
diff --git a/file_server/file_server.c b/file_server/file_server.c
index aab5f39..72d7de5 100644
--- a/file_server/file_server.c
+++ b/file_server/file_server.c
@@ -93,9 +93,9 @@ static void s3fs_task_init(struct task_server *task)
}
/* called at smbd startup - register ourselves as a server service */
-NTSTATUS server_service_s3fs_init(void);
+NTSTATUS server_service_s3fs_init(TALLOC_CTX *);
-NTSTATUS server_service_s3fs_init(void)
+NTSTATUS server_service_s3fs_init(TALLOC_CTX *ctx)
{
return register_server_service("s3fs", s3fs_task_init);
}
diff --git a/lib/util/modules.c b/lib/util/modules.c
index c7e9f64..c3c05f2 100644
--- a/lib/util/modules.c
+++ b/lib/util/modules.c
@@ -116,7 +116,7 @@ static init_module_fn *load_modules(TALLOC_CTX *mem_ctx, const char *path)
*
* @return true if all functions ran successfully, false otherwise
*/
-bool run_init_functions(init_module_fn *fns)
+bool run_init_functions(TALLOC_CTX *ctx, init_module_fn *fns)
{
int i;
bool ret = true;
@@ -124,7 +124,7 @@ bool run_init_functions(init_module_fn *fns)
if (fns == NULL)
return true;
- for (i = 0; fns[i]; i++) { ret &= (bool)NT_STATUS_IS_OK(fns[i]()); }
+ for (i = 0; fns[i]; i++) { ret &= (bool)NT_STATUS_IS_OK(fns[i](ctx)); }
return ret;
}
@@ -195,7 +195,7 @@ static NTSTATUS do_smb_load_module(const char *subsystem,
DEBUG(2, ("Module '%s' loaded\n", module_name));
- status = init();
+ status = init(NULL);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("Module '%s' initialization failed: %s\n",
module_name, get_friendly_nt_error_msg(status)));
diff --git a/lib/util/samba_modules.h b/lib/util/samba_modules.h
index 2f40811..1ae9c6e 100644
--- a/lib/util/samba_modules.h
+++ b/lib/util/samba_modules.h
@@ -22,9 +22,9 @@
#define _SAMBA_MODULES_H
/* Module support */
-typedef NTSTATUS (*init_module_fn) (void);
+typedef NTSTATUS (*init_module_fn) (TALLOC_CTX *ctx);
-NTSTATUS samba_init_module(void);
+NTSTATUS samba_init_module(TALLOC_CTX *ctx);
/* this needs to be a string which is not in the C library. We
previously used "init_module", but that meant that modules which
@@ -44,7 +44,7 @@ init_module_fn load_module(const char *path, bool is_probe, void **handle);
*
* @return true if all functions ran successfully, false otherwise
*/
-bool run_init_functions(init_module_fn *fns);
+bool run_init_functions(TALLOC_CTX *ctx, init_module_fn *fns);
/**
* Load the initialization functions from DSO files for a specific subsystem.
diff --git a/libcli/echo/tests/echo.c b/libcli/echo/tests/echo.c
index 6424c81..8e51504 100644
--- a/libcli/echo/tests/echo.c
+++ b/libcli/echo/tests/echo.c
@@ -26,7 +26,7 @@
#include "libcli/util/ntstatus.h"
#include "libcli/echo/libecho.h"
-NTSTATUS torture_libcli_echo_init(void);
+NTSTATUS torture_libcli_echo_init(TALLOC_CTX *);
/* Basic test function that sends an echo request and checks the reply */
static bool echo_udp_basic(struct torture_context *tctx, const char *address)
@@ -81,7 +81,7 @@ static bool torture_echo_udp(struct torture_context *tctx)
}
/* Test suite that bundles all the libecho tests */
-NTSTATUS torture_libcli_echo_init(void)
+NTSTATUS torture_libcli_echo_init(TALLOC_CTX *ctx)
{
struct torture_suite *suite;
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Server.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Server.pm
index 88c7705..ad36f00 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/Server.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Server.pm
@@ -259,7 +259,7 @@ static bool $name\__op_interface_by_name(struct dcesrv_interface *iface, const c
return false;
}
-NTSTATUS dcerpc_server_$name\_init(void)
+NTSTATUS dcerpc_server_$name\_init(TALLOC_CTX *ctx)
{
NTSTATUS ret;
static const struct dcesrv_endpoint_server ep_server = {
@@ -296,7 +296,7 @@ sub ParseInterface($)
my($interface) = shift;
my $count = 0;
- $res .= "NTSTATUS dcerpc_server_$interface->{NAME}\_init(void);\n";
+ $res .= "NTSTATUS dcerpc_server_$interface->{NAME}\_init(TALLOC_CTX *);\n";
$res .= "\n";
if (!defined $interface->{PROPERTIES}->{uuid}) {
diff --git a/source3/auth/auth.c b/source3/auth/auth.c
index ba6245d..54e9433 100644
--- a/source3/auth/auth.c
+++ b/source3/auth/auth.c
@@ -392,7 +392,7 @@ bool load_auth_module(struct auth_context *auth_context,
/* Initialise static modules if not done so yet */
if(!initialised_static_modules) {
- static_init_auth;
+ static_init_auth(NULL);
initialised_static_modules = True;
}
diff --git a/source3/auth/auth_builtin.c b/source3/auth/auth_builtin.c
index 7480799..0fa95d9 100644
--- a/source3/auth/auth_builtin.c
+++ b/source3/auth/auth_builtin.c
@@ -167,7 +167,7 @@ static NTSTATUS auth_init_name_to_ntstatus(struct auth_context *auth_context, co
#endif /* DEVELOPER */
-NTSTATUS auth_builtin_init(void)
+NTSTATUS auth_builtin_init(TALLOC_CTX *mem_ctx)
{
smb_register_auth(AUTH_INTERFACE_VERSION, "guest", auth_init_guest);
#ifdef DEVELOPER
diff --git a/source3/auth/auth_domain.c b/source3/auth/auth_domain.c
index b3ff518..40d717d 100644
--- a/source3/auth/auth_domain.c
+++ b/source3/auth/auth_domain.c
@@ -406,7 +406,7 @@ static NTSTATUS auth_init_trustdomain(struct auth_context *auth_context, const c
return NT_STATUS_OK;
}
-NTSTATUS auth_domain_init(void)
+NTSTATUS auth_domain_init(TALLOC_CTX *mem_ctx)
{
smb_register_auth(AUTH_INTERFACE_VERSION, "trustdomain", auth_init_trustdomain);
smb_register_auth(AUTH_INTERFACE_VERSION, "ntdomain", auth_init_ntdomain);
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
index 634386f..4bcb792 100644
--- a/source3/auth/auth_sam.c
+++ b/source3/auth/auth_sam.c
@@ -188,7 +188,7 @@ static NTSTATUS auth_init_sam_netlogon3(struct auth_context *auth_context,
return NT_STATUS_OK;
}
-NTSTATUS auth_sam_init(void)
+NTSTATUS auth_sam_init(TALLOC_CTX *mem_ctx)
{
smb_register_auth(AUTH_INTERFACE_VERSION, "sam", auth_init_sam);
smb_register_auth(AUTH_INTERFACE_VERSION, "sam_ignoredomain", auth_init_sam_ignoredomain);
diff --git a/source3/auth/auth_samba4.c b/source3/auth/auth_samba4.c
index 4c83c2a..46c8f9f 100644
--- a/source3/auth/auth_samba4.c
+++ b/source3/auth/auth_samba4.c
@@ -391,8 +391,8 @@ static NTSTATUS auth_init_samba4(struct auth_context *auth_context,
return NT_STATUS_OK;
}
-NTSTATUS auth_samba4_init(void);
-NTSTATUS auth_samba4_init(void)
+NTSTATUS auth_samba4_init(TALLOC_CTX *mem_ctx);
+NTSTATUS auth_samba4_init(TALLOC_CTX *mem_ctx)
{
smb_register_auth(AUTH_INTERFACE_VERSION, "samba4",
auth_init_samba4);
diff --git a/source3/auth/auth_script.c b/source3/auth/auth_script.c
index dc8794b..fae55e9 100644
--- a/source3/auth/auth_script.c
+++ b/source3/auth/auth_script.c
@@ -180,8 +180,8 @@ static NTSTATUS auth_init_script(struct auth_context *auth_context, const char *
return NT_STATUS_OK;
}
-NTSTATUS auth_script_init(void);
-NTSTATUS auth_script_init(void)
+NTSTATUS auth_script_init(TALLOC_CTX *);
+NTSTATUS auth_script_init(TALLOC_CTX *ctx)
{
return smb_register_auth(AUTH_INTERFACE_VERSION, "script", auth_init_script);
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list