summaryrefslogtreecommitdiff
path: root/source3/smbd/globals.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-05-31 13:18:37 +1000
committerAndrew Tridgell <tridge@samba.org>2011-06-21 15:54:51 +1000
commitb373d0e777df8770c24cfcc5cc80bf4808faa815 (patch)
treeaeb149d1bc9290a7ddfe0b9aba4cb1fe5314a59b /source3/smbd/globals.c
parente00b1fa2b032012e741d94f3fe0057d6ea53bf4c (diff)
downloadsamba-b373d0e777df8770c24cfcc5cc80bf4808faa815.tar.gz
samba-b373d0e777df8770c24cfcc5cc80bf4808faa815.tar.bz2
samba-b373d0e777df8770c24cfcc5cc80bf4808faa815.zip
s3-build: Provide a run-time shim to work around duplicate symbols
The become_root() and similar 'smbd' functions that are used widely in Samba libraries had 'dummy' copies in dummysmbd.c and dummyroot.c. These have been replaced by a runtime plugin mechanim, which ensures that standlone binaries still do nothing, while in smbd the correct function is used. This avoids having these as duplicate symbols in the smbd binary, which can cause unpredictable behaviour. Andrew Bartlett Signed-off-by: Andrew Tridgell <tridge@samba.org>
Diffstat (limited to 'source3/smbd/globals.c')
-rw-r--r--source3/smbd/globals.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/source3/smbd/globals.c b/source3/smbd/globals.c
index b3cf0bd7d2..2736fa69d0 100644
--- a/source3/smbd/globals.c
+++ b/source3/smbd/globals.c
@@ -20,6 +20,7 @@
#include "includes.h"
#include "smbd/smbd.h"
#include "smbd/globals.h"
+#include "lib/smbd_shim.h"
#include "memcache.h"
#include "messages.h"
#include "tdb_compat.h"
@@ -145,9 +146,24 @@ struct memcache *smbd_memcache(void)
return smbd_memcache_ctx;
}
+static const struct smbd_shim smbd_shim_fns =
+{
+ .cancel_pending_lock_requests_by_fid = smbd_cancel_pending_lock_requests_by_fid,
+ .send_stat_cache_delete_message = smbd_send_stat_cache_delete_message,
+ .can_delete_directory = smbd_can_delete_directory,
+ .change_to_root_user = smbd_change_to_root_user,
+
+ .contend_level2_oplocks_begin = smbd_contend_level2_oplocks_begin,
+ .contend_level2_oplocks_end = smbd_contend_level2_oplocks_end,
+
+ .become_root = smbd_become_root,
+ .unbecome_root = smbd_unbecome_root
+};
void smbd_init_globals(void)
{
+ set_smbd_shim(&smbd_shim_fns);
+
ZERO_STRUCT(conn_ctx_stack);
ZERO_STRUCT(sec_ctx_stack);