summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2012-07-18 15:07:23 +0930
committerRusty Russell <rusty@rustcorp.com.au>2012-07-18 15:07:23 +0930
commitfe72740e8221575921c22030d6d4fcb19201b03b (patch)
tree0b1bb254e23d6541eede8f2ff4494af477fd5566
parentc809eec53fb1d2a36909e4934dff349f91e3359e (diff)
downloadsamba-fe72740e8221575921c22030d6d4fcb19201b03b.tar.gz
samba-fe72740e8221575921c22030d6d4fcb19201b03b.tar.bz2
samba-fe72740e8221575921c22030d6d4fcb19201b03b.zip
loadparm: make the source3/ lp_ functions take an explicit TALLOC_CTX *.
They use talloc_tos() internally: hoist that up to the callers, some of whom don't want to us talloc_tos(). A simple patch, but hits a lot of files. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r--lib/util/debug_s3.c2
-rw-r--r--source3/auth/auth_util.c8
-rw-r--r--source3/auth/pampass.c2
-rw-r--r--source3/auth/user_util.c4
-rw-r--r--source3/client/client.c2
-rw-r--r--source3/groupdb/mapping.c20
-rw-r--r--source3/include/proto.h162
-rw-r--r--source3/lib/netapi/serverinfo.c4
-rw-r--r--source3/lib/smbldap.c3
-rw-r--r--source3/lib/sysquotas.c4
-rw-r--r--source3/lib/util.c4
-rw-r--r--source3/libnet/libnet_dssync_passdb.c4
-rw-r--r--source3/libnet/libnet_samsync_ldif.c40
-rw-r--r--source3/libnet/libnet_samsync_passdb.c4
-rw-r--r--source3/modules/vfs_default.c2
-rw-r--r--source3/modules/vfs_dfs_samba4.c2
-rw-r--r--source3/modules/vfs_expand_msdfs.c2
-rw-r--r--source3/modules/vfs_fileid.c2
-rw-r--r--source3/modules/vfs_full_audit.c4
-rw-r--r--source3/modules/vfs_recycle.c2
-rw-r--r--source3/nmbd/nmbd.c4
-rw-r--r--source3/nmbd/nmbd_sendannounce.c7
-rw-r--r--source3/nmbd/nmbd_serverlistdb.c2
-rw-r--r--source3/nmbd/nmbd_winsserver.c2
-rw-r--r--source3/nmbd/nmbd_workgroupdb.c2
-rw-r--r--source3/param/loadparm.c115
-rw-r--r--source3/param/service.c4
-rw-r--r--source3/passdb/pdb_interface.c8
-rw-r--r--source3/passdb/pdb_ipa.c8
-rw-r--r--source3/passdb/pdb_ldap.c54
-rw-r--r--source3/passdb/pdb_ldap_util.c6
-rw-r--r--source3/passdb/pdb_smbpasswd.c5
-rw-r--r--source3/passdb/pdb_tdb.c2
-rw-r--r--source3/passdb/secrets.c2
-rw-r--r--source3/printing/load.c2
-rw-r--r--source3/printing/notify.c16
-rw-r--r--source3/printing/nt_printing.c10
-rw-r--r--source3/printing/nt_printing_ads.c2
-rw-r--r--source3/printing/nt_printing_os2.c2
-rw-r--r--source3/printing/print_cups.c28
-rw-r--r--source3/printing/print_generic.c26
-rw-r--r--source3/printing/print_iprint.c24
-rw-r--r--source3/printing/printing.c38
-rw-r--r--source3/printing/printspoolss.c5
-rw-r--r--source3/printing/spoolssd.c12
-rw-r--r--source3/rpc_server/epmd.c5
-rw-r--r--source3/rpc_server/lsasd.c6
-rw-r--r--source3/rpc_server/samr/srv_samr_chgpasswd.c10
-rw-r--r--source3/rpc_server/samr/srv_samr_nt.c14
-rw-r--r--source3/rpc_server/spoolss/srv_spoolss_nt.c40
-rw-r--r--source3/rpc_server/srvsvc/srv_srvsvc_nt.c97
-rw-r--r--source3/rpc_server/winreg/srv_winreg_nt.c10
-rw-r--r--source3/smbd/close.c10
-rw-r--r--source3/smbd/conn_idle.c3
-rw-r--r--source3/smbd/connection.c7
-rw-r--r--source3/smbd/dfree.c2
-rw-r--r--source3/smbd/dosmode.c2
-rw-r--r--source3/smbd/fake_file.c4
-rw-r--r--source3/smbd/lanman.c25
-rw-r--r--source3/smbd/mangle.c2
-rw-r--r--source3/smbd/message.c12
-rw-r--r--source3/smbd/msdfs.c41
-rw-r--r--source3/smbd/nttrans.c4
-rw-r--r--source3/smbd/open.c2
-rw-r--r--source3/smbd/password.c2
-rw-r--r--source3/smbd/perfcount.c2
-rw-r--r--source3/smbd/process.c11
-rw-r--r--source3/smbd/reply.c16
-rw-r--r--source3/smbd/server.c2
-rw-r--r--source3/smbd/server_reload.c8
-rw-r--r--source3/smbd/service.c102
-rw-r--r--source3/smbd/share_access.c19
-rw-r--r--source3/smbd/smb2_find.c4
-rw-r--r--source3/smbd/smb2_tcon.c7
-rw-r--r--source3/smbd/trans2.c40
-rw-r--r--source3/smbd/uid.c15
-rw-r--r--source3/torture/cmd_vfs.c2
-rw-r--r--source3/utils/net_idmap.c3
-rw-r--r--source3/utils/net_sam.c15
-rw-r--r--source3/utils/net_usershare.c8
-rw-r--r--source3/utils/smbpasswd.c4
-rw-r--r--source3/utils/testparm.c44
-rw-r--r--source3/web/swat.c6
-rw-r--r--source3/winbindd/idmap_ldap.c2
-rw-r--r--source3/winbindd/winbindd.c8
-rw-r--r--source3/winbindd/winbindd_dual.c4
86 files changed, 661 insertions, 622 deletions
diff --git a/lib/util/debug_s3.c b/lib/util/debug_s3.c
index cfb675583c..ccf577f7b5 100644
--- a/lib/util/debug_s3.c
+++ b/lib/util/debug_s3.c
@@ -30,7 +30,7 @@ bool reopen_logs(void)
{
if (lp_loaded()) {
struct debug_settings settings;
- debug_set_logfile(lp_logfile());
+ debug_set_logfile(lp_logfile(talloc_tos()));
ZERO_STRUCT(settings);
settings.max_log_size = lp_max_log_size();
diff --git a/source3/auth/auth_util.c b/source3/auth/auth_util.c
index b38ee48d7f..b41fac8039 100644
--- a/source3/auth/auth_util.c
+++ b/source3/auth/auth_util.c
@@ -47,7 +47,7 @@ static int _smb_create_user(const char *domain, const char *unix_username, const
char *add_script;
int ret;
- add_script = talloc_strdup(ctx, lp_adduser_script());
+ add_script = lp_adduser_script(ctx);
if (!add_script || !*add_script) {
return -1;
}
@@ -416,8 +416,8 @@ static NTSTATUS log_nt_token(struct security_token *token)
char *group_sidstr;
size_t i;
- if ((lp_log_nt_token_command() == NULL) ||
- (strlen(lp_log_nt_token_command()) == 0)) {
+ if ((lp_log_nt_token_command(frame) == NULL) ||
+ (strlen(lp_log_nt_token_command(frame)) == 0)) {
TALLOC_FREE(frame);
return NT_STATUS_OK;
}
@@ -430,7 +430,7 @@ static NTSTATUS log_nt_token(struct security_token *token)
}
command = talloc_string_sub(
- frame, lp_log_nt_token_command(),
+ frame, lp_log_nt_token_command(frame),
"%s", sid_string_talloc(frame, &token->sids[0]));
command = talloc_string_sub(frame, command, "%t", group_sidstr);
diff --git a/source3/auth/pampass.c b/source3/auth/pampass.c
index c4da1e676c..87fa8ca9fa 100644
--- a/source3/auth/pampass.c
+++ b/source3/auth/pampass.c
@@ -299,7 +299,7 @@ static int smb_pam_passchange_conv(int num_msg,
if (num_msg <= 0)
return PAM_CONV_ERR;
- if ((pw_chat = make_pw_chat(lp_passwd_chat())) == NULL)
+ if ((pw_chat = make_pw_chat(lp_passwd_chat(talloc_tos()))) == NULL)
return PAM_CONV_ERR;
/*
diff --git a/source3/auth/user_util.c b/source3/auth/user_util.c
index d982c746c6..8938aeb003 100644
--- a/source3/auth/user_util.c
+++ b/source3/auth/user_util.c
@@ -267,11 +267,11 @@ bool user_in_list(TALLOC_CTX *ctx, const char *user,const char **list)
bool map_username(TALLOC_CTX *ctx, const char *user_in, char **p_user_out)
{
XFILE *f;
- char *mapfile = lp_username_map();
+ char *mapfile = lp_username_map(talloc_tos());
char *s;
char buf[512];
bool mapped_user = False;
- char *cmd = lp_username_map_script();
+ char *cmd = lp_username_map_script(talloc_tos());
*p_user_out = NULL;
diff --git a/source3/client/client.c b/source3/client/client.c
index e31cd6b85a..821bd0a32e 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -5501,7 +5501,7 @@ static int do_message_op(struct user_auth_info *a_info)
}
if ( override_logfile )
- setup_logging( lp_logfile(), DEBUG_FILE );
+ setup_logging( lp_logfile(talloc_tos()), DEBUG_FILE );
if (!lp_load_client(get_dyn_CONFIGFILE())) {
fprintf(stderr, "%s: Can't load %s - run testparm to debug it\n",
diff --git a/source3/groupdb/mapping.c b/source3/groupdb/mapping.c
index 2c0fea0cb9..c6fcc8aa71 100644
--- a/source3/groupdb/mapping.c
+++ b/source3/groupdb/mapping.c
@@ -213,11 +213,11 @@ int smb_create_group(const char *unix_group, gid_t *new_gid)
/* defer to scripts */
- if ( *lp_addgroup_script() ) {
+ if ( *lp_addgroup_script(talloc_tos()) ) {
TALLOC_CTX *ctx = talloc_tos();
add_script = talloc_strdup(ctx,
- lp_addgroup_script());
+ lp_addgroup_script(ctx));
if (!add_script) {
return -1;
}
@@ -269,11 +269,11 @@ int smb_delete_group(const char *unix_group)
/* defer to scripts */
- if ( *lp_delgroup_script() ) {
+ if ( *lp_delgroup_script(talloc_tos()) ) {
TALLOC_CTX *ctx = talloc_tos();
del_script = talloc_strdup(ctx,
- lp_delgroup_script());
+ lp_delgroup_script(ctx));
if (!del_script) {
return -1;
}
@@ -304,11 +304,11 @@ int smb_set_primary_group(const char *unix_group, const char* unix_user)
/* defer to scripts */
- if ( *lp_setprimarygroup_script() ) {
+ if ( *lp_setprimarygroup_script(talloc_tos()) ) {
TALLOC_CTX *ctx = talloc_tos();
add_script = talloc_strdup(ctx,
- lp_setprimarygroup_script());
+ lp_setprimarygroup_script(ctx));
if (!add_script) {
return -1;
}
@@ -346,11 +346,11 @@ int smb_add_user_group(const char *unix_group, const char *unix_user)
/* defer to scripts */
- if ( *lp_addusertogroup_script() ) {
+ if ( *lp_addusertogroup_script(talloc_tos()) ) {
TALLOC_CTX *ctx = talloc_tos();
add_script = talloc_strdup(ctx,
- lp_addusertogroup_script());
+ lp_addusertogroup_script(ctx));
if (!add_script) {
return -1;
}
@@ -386,11 +386,11 @@ int smb_delete_user_group(const char *unix_group, const char *unix_user)
/* defer to scripts */
- if ( *lp_deluserfromgroup_script() ) {
+ if ( *lp_deluserfromgroup_script(talloc_tos()) ) {
TALLOC_CTX *ctx = talloc_tos();
del_script = talloc_strdup(ctx,
- lp_deluserfromgroup_script());
+ lp_deluserfromgroup_script(ctx));
if (!del_script) {
return -1;
}
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 95dded820d..d4be239120 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1019,34 +1019,34 @@ NTSTATUS change_trust_account_password( const char *domain, const char *remote_m
const char *lp_smb_ports(void);
const char *lp_dos_charset(void);
const char *lp_unix_charset(void);
-char *lp_logfile(void);
-char *lp_configfile(void);
+char *lp_logfile(TALLOC_CTX *ctx);
+char *lp_configfile(TALLOC_CTX *ctx);
const char *lp_smb_passwd_file(void);
const char *lp_private_dir(void);
-char *lp_serverstring(void);
+char *lp_serverstring(TALLOC_CTX *ctx);
int lp_printcap_cache_time(void);
-char *lp_addport_cmd(void);
-char *lp_enumports_cmd(void);
-char *lp_addprinter_cmd(void);
-char *lp_deleteprinter_cmd(void);
-char *lp_os2_driver_map(void);
+char *lp_addport_cmd(TALLOC_CTX *ctx);
+char *lp_enumports_cmd(TALLOC_CTX *ctx);
+char *lp_addprinter_cmd(TALLOC_CTX *ctx);
+char *lp_deleteprinter_cmd(TALLOC_CTX *ctx);
+char *lp_os2_driver_map(TALLOC_CTX *ctx);
const char *lp_lockdir(void);
const char *lp_statedir(void);
const char *lp_cachedir(void);
const char *lp_piddir(void);
-char *lp_mangling_method(void);
+char *lp_mangling_method(TALLOC_CTX *ctx);
int lp_mangle_prefix(void);
const char *lp_utmpdir(void);
const char *lp_wtmpdir(void);
bool lp_utmp(void);
-char *lp_rootdir(void);
-char *lp_defaultservice(void);
-char *lp_msg_command(void);
-char *lp_get_quota_command(void);
-char *lp_set_quota_command(void);
-char *lp_auto_services(void);
-char *lp_passwd_program(void);
-char *lp_passwd_chat(void);
+char *lp_rootdir(TALLOC_CTX *ctx);
+char *lp_defaultservice(TALLOC_CTX *ctx);
+char *lp_msg_command(TALLOC_CTX *ctx);
+char *lp_get_quota_command(TALLOC_CTX *ctx);
+char *lp_set_quota_command(TALLOC_CTX *ctx);
+char *lp_auto_services(TALLOC_CTX *ctx);
+char *lp_passwd_program(TALLOC_CTX *ctx);
+char *lp_passwd_chat(TALLOC_CTX *ctx);
const char *lp_passwordserver(void);
const char *lp_name_resolve_order(void);
const char *lp_netbios_scope(void);
@@ -1056,39 +1056,39 @@ const char *lp_realm(void);
const char *lp_dnsdomain(void);
const char *lp_afs_username_map(void);
int lp_afs_token_lifetime(void);
-char *lp_log_nt_token_command(void);
-char *lp_username_map(void);
+char *lp_log_nt_token_command(TALLOC_CTX *ctx);
+char *lp_username_map(TALLOC_CTX *ctx);
const char *lp_logon_script(void);
const char *lp_logon_path(void);
const char *lp_logon_drive(void);
const char *lp_logon_home(void);
-char *lp_remote_announce(void);
-char *lp_remote_browse_sync(void);
+char *lp_remote_announce(TALLOC_CTX *ctx);
+char *lp_remote_browse_sync(TALLOC_CTX *ctx);
bool lp_nmbd_bind_explicit_broadcast(void);
const char **lp_wins_server_list(void);
const char **lp_interfaces(void);
const char *lp_socket_address(void);
-char *lp_nis_home_map_name(void);
+char *lp_nis_home_map_name(TALLOC_CTX *ctx);
const char **lp_netbios_aliases(void);
const char *lp_passdb_backend(void);
const char **lp_preload_modules(void);
-char *lp_panic_action(void);
-char *lp_adduser_script(void);
-char *lp_renameuser_script(void);
-char *lp_deluser_script(void);
+char *lp_panic_action(TALLOC_CTX *ctx);
+char *lp_adduser_script(TALLOC_CTX *ctx);
+char *lp_renameuser_script(TALLOC_CTX *ctx);
+char *lp_deluser_script(TALLOC_CTX *ctx);
const char *lp_guestaccount(void);
-char *lp_addgroup_script(void);
-char *lp_delgroup_script(void);
-char *lp_addusertogroup_script(void);
-char *lp_deluserfromgroup_script(void);
-char *lp_setprimarygroup_script(void);
-char *lp_addmachine_script(void);
-char *lp_shutdown_script(void);
-char *lp_abort_shutdown_script(void);
-char *lp_username_map_script(void);
+char *lp_addgroup_script(TALLOC_CTX *ctx);
+char *lp_delgroup_script(TALLOC_CTX *ctx);
+char *lp_addusertogroup_script(TALLOC_CTX *ctx);
+char *lp_deluserfromgroup_script(TALLOC_CTX *ctx);
+char *lp_setprimarygroup_script(TALLOC_CTX *ctx);
+char *lp_addmachine_script(TALLOC_CTX *ctx);
+char *lp_shutdown_script(TALLOC_CTX *ctx);
+char *lp_abort_shutdown_script(TALLOC_CTX *ctx);
+char *lp_username_map_script(TALLOC_CTX *ctx);
int lp_username_map_cache_time(void);
-char *lp_check_password_script(void);
-char *lp_wins_hook(void);
+char *lp_check_password_script(TALLOC_CTX *ctx);
+char *lp_wins_hook(TALLOC_CTX *ctx);
const char *lp_template_homedir(void);
const char *lp_template_shell(void);
const char *lp_winbind_separator(void);
@@ -1110,8 +1110,8 @@ int lp_idmap_cache_time(void);
int lp_idmap_negative_cache_time(void);
int lp_keepalive(void);
bool lp_passdb_expand_explicit(void);
-char *lp_ldap_suffix(void);
-char *lp_ldap_admin_dn(void);
+char *lp_ldap_suffix(TALLOC_CTX *ctx);
+char *lp_ldap_admin_dn(TALLOC_CTX *ctx);
int lp_ldap_ssl(void);
bool lp_ldap_ssl_ads(void);
int lp_ldap_deref(void);
@@ -1124,10 +1124,10 @@ int lp_ldap_connection_timeout(void);
int lp_ldap_page_size(void);
int lp_ldap_debug_level(void);
int lp_ldap_debug_threshold(void);
-char *lp_add_share_cmd(void);
-char *lp_change_share_cmd(void);
-char *lp_delete_share_cmd(void);
-char *lp_usershare_path(void);
+char *lp_add_share_cmd(TALLOC_CTX *ctx);
+char *lp_change_share_cmd(TALLOC_CTX *ctx);
+char *lp_delete_share_cmd(TALLOC_CTX *ctx);
+char *lp_usershare_path(TALLOC_CTX *ctx);
const char **lp_usershare_prefix_allow_list(void);
const char **lp_usershare_prefix_deny_list(void);
const char **lp_eventlog_list(void);
@@ -1231,23 +1231,23 @@ int lp_smb2_max_read(void);
int lp_smb2_max_write(void);
int lp_smb2_max_trans(void);
int lp_smb2_max_credits(void);
-char *lp_preexec(int );
-char *lp_postexec(int );
-char *lp_rootpreexec(int );
-char *lp_rootpostexec(int );
-char *lp_servicename(int );
+char *lp_preexec(TALLOC_CTX *ctx, int );
+char *lp_postexec(TALLOC_CTX *ctx, int );
+char *lp_rootpreexec(TALLOC_CTX *ctx, int );
+char *lp_rootpostexec(TALLOC_CTX *ctx, int );
+char *lp_servicename(TALLOC_CTX *ctx, int );
const char *lp_const_servicename(int );
-char *lp_pathname(int );
-char *lp_dontdescend(int );
-char *lp_username(int );
+char *lp_pathname(TALLOC_CTX *ctx, int );
+char *lp_dontdescend(TALLOC_CTX *ctx, int );
+char *lp_username(TALLOC_CTX *ctx, int );
const char **lp_invalid_users(int );
const char **lp_valid_users(int );
const char **lp_admin_users(int );
const char **lp_svcctl_list(void);
-char *lp_cups_options(int );
-char *lp_cups_server(void);
+char *lp_cups_options(TALLOC_CTX *ctx, int );
+char *lp_cups_server(TALLOC_CTX *ctx);
int lp_cups_encrypt(void);
-char *lp_iprint_server(void);
+char *lp_iprint_server(TALLOC_CTX *ctx);
int lp_cups_connection_timeout(void);
const char *lp_ctdbd_socket(void);
const char *_lp_ctdbd_socket(void);
@@ -1255,32 +1255,32 @@ const char **lp_cluster_addresses(void);
bool lp_clustering(void);
int lp_ctdb_timeout(void);
int lp_ctdb_locktime_warn_threshold(void);
-char *lp_printcommand(int );
-char *lp_lpqcommand(int );
-char *lp_lprmcommand(int );
-char *lp_lppausecommand(int );
-char *lp_lpresumecommand(int );
-char *lp_queuepausecommand(int );
-char *lp_queueresumecommand(int );
+char *lp_printcommand(TALLOC_CTX *ctx, int );
+char *lp_lpqcommand(TALLOC_CTX *ctx, int );
+char *lp_lprmcommand(TALLOC_CTX *ctx, int );
+char *lp_lppausecommand(TALLOC_CTX *ctx, int );
+char *lp_lpresumecommand(TALLOC_CTX *ctx, int );
+char *lp_queuepausecommand(TALLOC_CTX *ctx, int );
+char *lp_queueresumecommand(TALLOC_CTX *ctx, int );
const char *lp_printjob_username(int );
const char **lp_hostsallow(int );
const char **lp_hostsdeny(int );
-char *lp_magicscript(int );
-char *lp_magicoutput(int );
-char *lp_comment(int );
-char *lp_force_user(int );
-char *lp_force_group(int );
+char *lp_magicscript(TALLOC_CTX *ctx, int );
+char *lp_magicoutput(TALLOC_CTX *ctx, int );
+char *lp_comment(TALLOC_CTX *ctx, int );
+char *lp_force_user(TALLOC_CTX *ctx, int );
+char *lp_force_group(TALLOC_CTX *ctx, int );
const char **lp_readlist(int );
const char **lp_writelist(int );
-char *lp_fstype(int );
+char *lp_fstype(TALLOC_CTX *ctx, int );
const char **lp_vfs_objects(int );
-char *lp_msdfs_proxy(int );
-char *lp_veto_files(int );
-char *lp_hide_files(int );
-char *lp_veto_oplocks(int );
+char *lp_msdfs_proxy(TALLOC_CTX *ctx, int );
+char *lp_veto_files(TALLOC_CTX *ctx, int );
+char *lp_hide_files(TALLOC_CTX *ctx, int );
+char *lp_veto_oplocks(TALLOC_CTX *ctx, int );
bool lp_msdfs_root(int );
-char *lp_aio_write_behind(int );
-char *lp_dfree_command(int );
+char *lp_aio_write_behind(TALLOC_CTX *ctx, int );
+char *lp_dfree_command(TALLOC_CTX *ctx, int );
bool lp_autoloaded(int );
bool lp_preexec_close(int );
bool lp_rootpreexec_close(int );
@@ -1379,7 +1379,7 @@ int lp_name_cache_timeout(void);
int lp_client_signing(void);
int lp_server_signing(void);
int lp_client_ldap_sasl_wrapping(void);
-char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def);
+char *lp_parm_talloc_string(TALLOC_CTX *ctx, int snum, const char *type, const char *option, const char *def);
const char *lp_parm_const_string(int snum, const char *type, const char *option, const char *def);
struct loadparm_service;
const char *lp_parm_const_string_service(struct loadparm_service *service, const char *type, const char *option);
@@ -1416,10 +1416,10 @@ bool lp_config_backend_is_file(void);
bool lp_file_list_changed(void);
bool lp_idmap_uid(uid_t *low, uid_t *high);
bool lp_idmap_gid(gid_t *low, gid_t *high);
-const char *lp_ldap_machine_suffix(void);
-const char *lp_ldap_user_suffix(void);
-const char *lp_ldap_group_suffix(void);
-const char *lp_ldap_idmap_suffix(void);
+const char *lp_ldap_machine_suffix(TALLOC_CTX *ctx);
+const char *lp_ldap_user_suffix(TALLOC_CTX *ctx);
+const char *lp_ldap_group_suffix(TALLOC_CTX *ctx);
+const char *lp_ldap_idmap_suffix(TALLOC_CTX *ctx);
struct parm_struct;
/* Return a pointer to a service by name. */
struct loadparm_service *lp_service(const char *pszServiceName);
@@ -1480,14 +1480,14 @@ void lp_dump_one(FILE * f, bool show_defaults, int snum);
int lp_servicenumber(const char *pszServiceName);
struct share_params *get_share_params(TALLOC_CTX *mem_ctx,
const char *sharename);
-const char *volume_label(int snum);
+const char *volume_label(TALLOC_CTX *ctx, int snum);
bool lp_domain_master(void);
bool lp_preferred_master(void);
void lp_remove_service(int snum);
void lp_copy_service(int snum, const char *new_name);
int lp_default_server_announce(void);
void lp_set_name_resolve_order(const char *new_order);
-const char *lp_printername(int snum);
+const char *lp_printername(TALLOC_CTX *ctx, int snum);
void lp_set_logfile(const char *name);
int lp_maxprintjobs(int snum);
const char *lp_printcapname(void);
@@ -1504,7 +1504,7 @@ void lp_set_posix_pathnames(void);
enum brl_flavour lp_posix_cifsu_locktype(files_struct *fsp);
void lp_set_posix_default_cifsx_readwrite_locktype(enum brl_flavour val);
int lp_min_receive_file_size(void);
-char* lp_perfcount_module(void);
+char* lp_perfcount_module(TALLOC_CTX *ctx);
void widelinks_warning(int snum);
const char *lp_ncalrpc_dir(void);
void _lp_set_server_role(int server_role);
diff --git a/source3/lib/netapi/serverinfo.c b/source3/lib/netapi/serverinfo.c
index 4b11339f94..046b693f1f 100644
--- a/source3/lib/netapi/serverinfo.c
+++ b/source3/lib/netapi/serverinfo.c
@@ -40,7 +40,7 @@ static WERROR NetServerGetInfo_l_101(struct libnetapi_ctx *ctx,
i.sv101_version_major = SAMBA_MAJOR_NBT_ANNOUNCE_VERSION;
i.sv101_version_minor = SAMBA_MINOR_NBT_ANNOUNCE_VERSION;
i.sv101_type = lp_default_server_announce();
- i.sv101_comment = lp_serverstring();
+ i.sv101_comment = lp_serverstring(ctx);
*buffer = (uint8_t *)talloc_memdup(ctx, &i, sizeof(i));
if (!*buffer) {
@@ -58,7 +58,7 @@ static WERROR NetServerGetInfo_l_1005(struct libnetapi_ctx *ctx,
{
struct SERVER_INFO_1005 info1005;
- info1005.sv1005_comment = lp_serverstring();
+ info1005.sv1005_comment = lp_serverstring(ctx);
*buffer = (uint8_t *)talloc_memdup(ctx, &info1005, sizeof(info1005));
if (!*buffer) {
return WERR_NOMEM;
diff --git a/source3/lib/smbldap.c b/source3/lib/smbldap.c
index 81276936e6..85a9ac557f 100644
--- a/source3/lib/smbldap.c
+++ b/source3/lib/smbldap.c
@@ -1626,7 +1626,8 @@ int smbldap_search_suffix (struct smbldap_state *ldap_state,
const char *filter, const char **search_attr,
LDAPMessage ** result)
{
- return smbldap_search(ldap_state, lp_ldap_suffix(), LDAP_SCOPE_SUBTREE,
+ return smbldap_search(ldap_state, lp_ldap_suffix(talloc_tos()),
+ LDAP_SCOPE_SUBTREE,
filter, search_attr, 0, result);
}
diff --git a/source3/lib/sysquotas.c b/source3/lib/sysquotas.c
index 12c34edaa2..08f8444e2f 100644
--- a/source3/lib/sysquotas.c
+++ b/source3/lib/sysquotas.c
@@ -188,7 +188,7 @@ static int command_get_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
const char *get_quota_command;
char **lines = NULL;
- get_quota_command = lp_get_quota_command();
+ get_quota_command = lp_get_quota_command(talloc_tos());
if (get_quota_command && *get_quota_command) {
const char *p;
char *p2;
@@ -332,7 +332,7 @@ static int command_set_quota(const char *path, enum SMB_QUOTA_TYPE qtype, unid_t
{
const char *set_quota_command;
- set_quota_command = lp_set_quota_command();
+ set_quota_command = lp_set_quota_command(talloc_tos());
if (set_quota_command && *set_quota_command) {
char **lines = NULL;
char *syscmd = NULL;
diff --git a/source3/lib/util.c b/source3/lib/util.c
index fa46448296..9c380c5a02 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -669,7 +669,7 @@ char *automount_lookup(TALLOC_CTX *ctx, const char *user_name)
char *nis_result; /* yp_match inits this */
int nis_result_len; /* and set this */
char *nis_domain; /* yp_get_default_domain inits this */
- char *nis_map = (char *)lp_nis_home_map_name();
+ char *nis_map = lp_nis_home_map_name(talloc_tos());
if ((nis_error = yp_get_default_domain(&nis_domain)) != 0) {
DEBUG(3, ("YP Error: %s\n", yperr_string(nis_error)));
@@ -899,7 +899,7 @@ void smb_panic_s3(const char *why)
prctl(PR_SET_PTRACER, getpid(), 0, 0, 0);
#endif
- cmd = lp_panic_action();
+ cmd = lp_panic_action(talloc_tos());
if (cmd && *cmd) {
DEBUG(0, ("smb_panic(): calling panic action [%s]\n", cmd));
result = system(cmd);
diff --git a/source3/libnet/libnet_dssync_passdb.c b/source3/libnet/libnet_dssync_passdb.c
index b56c2d4451..edadddbb28 100644
--- a/source3/libnet/libnet_dssync_passdb.c
+++ b/source3/libnet/libnet_dssync_passdb.c
@@ -670,11 +670,11 @@ static NTSTATUS smb_create_user(TALLOC_CTX *mem_ctx,
/* Create appropriate user */
if (acct_flags & ACB_NORMAL) {
- add_script = talloc_strdup(mem_ctx, lp_adduser_script());
+ add_script = lp_adduser_script(mem_ctx);
} else if ( (acct_flags & ACB_WSTRUST) ||
(acct_flags & ACB_SVRTRUST) ||
(acct_flags & ACB_DOMTRUST) ) {
- add_script = talloc_strdup(mem_ctx, lp_addmachine_script());
+ add_script = lp_addmachine_script(mem_ctx);
} else {
DEBUG(1, ("Unknown user type: %s\n",
pdb_encode_acct_ctrl(acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)));
diff --git a/source3/libnet/libnet_samsync_ldif.c b/source3/libnet/libnet_samsync_ldif.c
index a46bfca554..c492b9fda5 100644
--- a/source3/libnet/libnet_samsync_ldif.c
+++ b/source3/libnet/libnet_samsync_ldif.c
@@ -130,7 +130,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
fprintf(add_fd, "\n");
fflush(add_fd);
- user_suffix = lp_ldap_user_suffix();
+ user_suffix = lp_ldap_user_suffix(talloc_tos());
if (user_suffix == NULL) {
SAFE_FREE(suffix_attr);
return NT_STATUS_NO_MEMORY;
@@ -138,7 +138,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
/* If it exists and is distinct from other containers,
Write the Users entity */
if (*user_suffix && strcmp(user_suffix, suffix)) {
- user_attr = sstring_sub(lp_ldap_user_suffix(), '=', ',');
+ user_attr = sstring_sub(lp_ldap_user_suffix(talloc_tos()), '=', ',');
fprintf(add_fd, "# %s\n", user_suffix);
fprintf(add_fd, "dn: %s\n", user_suffix);
fprintf(add_fd, "objectClass: organizationalUnit\n");
@@ -148,7 +148,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
}
- group_suffix = lp_ldap_group_suffix();
+ group_suffix = lp_ldap_group_suffix(talloc_tos());
if (group_suffix == NULL) {
SAFE_FREE(suffix_attr);
SAFE_FREE(user_attr);
@@ -157,7 +157,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
/* If it exists and is distinct from other containers,
Write the Groups entity */
if (*group_suffix && strcmp(group_suffix, suffix)) {
- group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+ group_attr = sstring_sub(lp_ldap_group_suffix(talloc_tos()), '=', ',');
fprintf(add_fd, "# %s\n", group_suffix);
fprintf(add_fd, "dn: %s\n", group_suffix);
fprintf(add_fd, "objectClass: organizationalUnit\n");
@@ -168,7 +168,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
/* If it exists and is distinct from other containers,
Write the Computers entity */
- machine_suffix = lp_ldap_machine_suffix();
+ machine_suffix = lp_ldap_machine_suffix(talloc_tos());
if (machine_suffix == NULL) {
SAFE_FREE(suffix_attr);
SAFE_FREE(user_attr);
@@ -183,7 +183,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
fprintf(add_fd, "objectClass: organizationalUnit\n");
/* this isn't totally correct as it assumes that
there _must_ be an ou. just fixing memleak now. jmcd */
- machine_ou = sstring_sub(lp_ldap_machine_suffix(), '=', ',');
+ machine_ou = sstring_sub(lp_ldap_machine_suffix(talloc_tos()), '=', ',');
fprintf(add_fd, "ou: %s\n", machine_ou);
SAFE_FREE(machine_ou);
fprintf(add_fd, "\n");
@@ -192,7 +192,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
/* If it exists and is distinct from other containers,
Write the IdMap entity */
- idmap_suffix = lp_ldap_idmap_suffix();
+ idmap_suffix = lp_ldap_idmap_suffix(talloc_tos());
if (idmap_suffix == NULL) {
SAFE_FREE(suffix_attr);
SAFE_FREE(user_attr);
@@ -206,7 +206,7 @@ static NTSTATUS populate_ldap_for_ldif(const char *sid,
fprintf(add_fd, "# %s\n", idmap_suffix);
fprintf(add_fd, "dn: %s\n", idmap_suffix);
fprintf(add_fd, "ObjectClass: organizationalUnit\n");
- s = sstring_sub(lp_ldap_idmap_suffix(), '=', ',');
+ s = sstring_sub(lp_ldap_idmap_suffix(talloc_tos()), '=', ',');
fprintf(add_fd, "ou: %s\n", s);
SAFE_FREE(s);
fprintf(add_fd, "\n");
@@ -370,7 +370,7 @@ static NTSTATUS map_populate_groups(TALLOC_CTX *mem_ctx,
const char *suffix,
const char *builtin_sid)
{
- char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+ char *group_attr = sstring_sub(lp_ldap_group_suffix(talloc_tos()), '=', ',');
/* Map the groups created by populate_ldap_for_ldif */
groupmap[0].rid = 512;
@@ -576,7 +576,7 @@ static NTSTATUS fetch_group_info_to_ldif(TALLOC_CTX *mem_ctx,
{
const char *groupname = r->group_name.string;
uint32 grouptype = 0, g_rid = 0;
- char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+ char *group_attr = sstring_sub(lp_ldap_group_suffix(talloc_tos()), '=', ',');
/* Set up the group type (always 2 for group info) */
grouptype = 2;
@@ -673,9 +673,9 @@ static NTSTATUS fetch_account_info_to_ldif(TALLOC_CTX *mem_ctx,
} else {
snprintf(homedir, sizeof(homedir), "/nobodyshomedir");
}
- ou = lp_ldap_user_suffix();
+ ou = lp_ldap_user_suffix(talloc_tos());
} else {
- ou = lp_ldap_machine_suffix();
+ ou = lp_ldap_machine_suffix(talloc_tos());
snprintf(homedir, sizeof(homedir), "/machinehomedir");
}
@@ -795,7 +795,7 @@ static NTSTATUS fetch_alias_info_to_ldif(TALLOC_CTX *mem_ctx,
{
fstring aliasname, description;
uint32 grouptype = 0, g_rid = 0;
- char *group_attr = sstring_sub(lp_ldap_group_suffix(), '=', ',');
+ char *group_attr = sstring_sub(lp_ldap_group_suffix(talloc_tos()), '=', ',');
/* Get the alias name */
fstrcpy(aliasname, r->alias_name.string);
@@ -930,6 +930,12 @@ static NTSTATUS ldif_init_context(TALLOC_CTX *mem_ctx,
const char *mod_template = "/tmp/mod.ldif.XXXXXX";
const char *builtin_sid = "S-1-5-32";
+ r = talloc_zero(mem_ctx, struct samsync_ldif_context);
+ NT_STATUS_HAVE_NO_MEMORY(r);
+
+ /* Get the ldap suffix */
+ r->suffix = lp_ldap_suffix(talloc_tos());
+
/* Get other smb.conf data */
if (!(lp_workgroup()) || !*(lp_workgroup())) {
DEBUG(0,("workgroup missing from smb.conf--exiting\n"));
@@ -937,7 +943,7 @@ static NTSTATUS ldif_init_context(TALLOC_CTX *mem_ctx,
}
/* Get the ldap suffix */
- if (!(lp_ldap_suffix()) || !*(lp_ldap_suffix())) {
+ if (!r->suffix || !*r->suffix) {
DEBUG(0,("ldap suffix missing from smb.conf--exiting\n"));
exit(1);
}
@@ -946,12 +952,6 @@ static NTSTATUS ldif_init_context(TALLOC_CTX *mem_ctx,
return NT_STATUS_OK;
}
- r = talloc_zero(mem_ctx, struct samsync_ldif_context);
- NT_STATUS_HAVE_NO_MEMORY(r);
-
- /* Get the ldap suffix */
- r->suffix = lp_ldap_suffix();
-
/* Ensure we have an output file */
if (ldif_filename) {
r->ldif_file = fopen(ldif_filename, "a");
diff --git a/source3/libnet/libnet_samsync_passdb.c b/source3/libnet/libnet_samsync_passdb.c
index cf47934475..c09474e9b7 100644
--- a/source3/libnet/libnet_samsync_passdb.c
+++ b/source3/libnet/libnet_samsync_passdb.c
@@ -250,11 +250,11 @@ static NTSTATUS smb_create_user(TALLOC_CTX *mem_ctx,
/* Create appropriate user */
if (acct_flags & ACB_NORMAL) {
- add_script = talloc_strdup(mem_ctx, lp_adduser_script());
+ add_script = lp_adduser_script(mem_ctx);
} else if ( (acct_flags & ACB_WSTRUST) ||
(acct_flags & ACB_SVRTRUST) ||
(acct_flags & ACB_DOMTRUST) ) {
- add_script = talloc_strdup(mem_ctx, lp_addmachine_script());
+ add_script = lp_addmachine_script(mem_ctx);
} else {
DEBUG(1, ("Unknown user type: %s\n",
pdb_encode_acct_ctrl(acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)));
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 8485495bb5..f8c5b75977 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -161,7 +161,7 @@ static uint32_t vfswrap_fs_capabilities(struct vfs_handle_struct *handle,
"resolution of %s "
"available on share %s, directory %s\n",
*p_ts_res == TIMESTAMP_SET_MSEC ? "msec" : "sec",
- lp_servicename(conn->params->service),
+ lp_servicename(talloc_tos(), conn->params->service),
conn->connectpath ));
}
TALLOC_FREE(smb_fname_cpath);
diff --git a/source3/modules/vfs_dfs_samba4.c b/source3/modules/vfs_dfs_samba4.c
index 200c744889..e77a993331 100644
--- a/source3/modules/vfs_dfs_samba4.c
+++ b/source3/modules/vfs_dfs_samba4.c
@@ -96,7 +96,7 @@ static int dfs_samba4_connect(struct vfs_handle_struct *handle,
static void dfs_samba4_disconnect(struct vfs_handle_struct *handle)
{
DEBUG(10,("dfs_samba4_disconnect() connect to service[%s].\n",
- lp_servicename(SNUM(handle->conn))));
+ lp_servicename(talloc_tos(), SNUM(handle->conn))));
SMB_VFS_NEXT_DISCONNECT(handle);
}
diff --git a/source3/modules/vfs_expand_msdfs.c b/source3/modules/vfs_expand_msdfs.c
index d6e25776f1..eaf96e0ae0 100644
--- a/source3/modules/vfs_expand_msdfs.c
+++ b/source3/modules/vfs_expand_msdfs.c
@@ -156,7 +156,7 @@ static char *expand_msdfs_target(TALLOC_CTX *ctx,
}
targethost = talloc_sub_advanced(ctx,
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
diff --git a/source3/modules/vfs_fileid.c b/source3/modules/vfs_fileid.c
index 6237513f23..25048e767d 100644
--- a/source3/modules/vfs_fileid.c
+++ b/source3/modules/vfs_fileid.c
@@ -229,7 +229,7 @@ static int fileid_connect(struct vfs_handle_struct *handle,
static void fileid_disconnect(struct vfs_handle_struct *handle)
{
DEBUG(10,("fileid_disconnect() connect to service[%s].\n",
- lp_servicename(SNUM(handle->conn))));
+ lp_servicename(talloc_tos(), SNUM(handle->conn))));
SMB_VFS_NEXT_DISCONNECT(handle);
}
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c
index de4f7996bf..b93df5090d 100644
--- a/source3/modules/vfs_full_audit.c
+++ b/source3/modules/vfs_full_audit.c
@@ -397,7 +397,7 @@ static char *audit_prefix(TALLOC_CTX *ctx, connection_struct *conn)
return NULL;
}
result = talloc_sub_advanced(ctx,
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
@@ -637,7 +637,7 @@ static void smb_full_audit_disconnect(vfs_handle_struct *handle)
SMB_VFS_NEXT_DISCONNECT(handle);
do_log(SMB_VFS_OP_DISCONNECT, True, handle,
- "%s", lp_servicename(SNUM(handle->conn)));
+ "%s", lp_servicename(talloc_tos(), SNUM(handle->conn)));
/* The bitmaps will be disconnected when the private
data is deleted. */
diff --git a/source3/modules/vfs_recycle.c b/source3/modules/vfs_recycle.c
index 37d930f793..3e6825041e 100644
--- a/source3/modules/vfs_recycle.c
+++ b/source3/modules/vfs_recycle.c
@@ -448,7 +448,7 @@ static int recycle_unlink(vfs_handle_struct *handle,
NTSTATUS status;
int rc = -1;
- repository = talloc_sub_advanced(NULL, lp_servicename(SNUM(conn)),
+ repository = talloc_sub_advanced(NULL, lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
index d464e7e0f6..ebe83a6147 100644
--- a/source3/nmbd/nmbd.c
+++ b/source3/nmbd/nmbd.c
@@ -382,7 +382,7 @@ static bool reload_nmbd_services(bool test)
set_remote_machine_name("nmbd", False);
if ( lp_loaded() ) {
- char *fname = lp_configfile();
+ char *fname = lp_configfile(talloc_tos());
if (file_exist(fname) && !strcsequal(fname,get_dyn_CONFIGFILE())) {
set_dyn_CONFIGFILE(fname);
test = False;
@@ -843,7 +843,7 @@ static bool open_sockets(bool isdaemon, int port)
}
fault_setup();
- dump_core_setup("nmbd", lp_logfile());
+ dump_core_setup("nmbd", lp_logfile(talloc_tos()));
/* POSIX demands that signals are inherited. If the invoking process has
* these signals masked, we will have problems, as we won't receive them. */
diff --git a/source3/nmbd/nmbd_sendannounce.c b/source3/nmbd/nmbd_sendannounce.c
index 39e63d29ab..97bab9d25a 100644
--- a/source3/nmbd/nmbd_sendannounce.c
+++ b/source3/nmbd/nmbd_sendannounce.c
@@ -470,11 +470,12 @@ void announce_remote(time_t t)
last_time = t;
- s = lp_remote_announce();
+ s = lp_remote_announce(talloc_tos());
if (!*s)
return;
- comment = string_truncate(lp_serverstring(), MAX_SERVER_STRING_LENGTH);
+ comment = string_truncate(lp_serverstring(talloc_tos()),
+ MAX_SERVER_STRING_LENGTH);
frame = talloc_stackframe();
for (ptr=s; next_token_talloc(frame,&ptr,&s2,NULL); ) {
@@ -540,7 +541,7 @@ void browse_sync_remote(time_t t)
last_time = t;
- s = lp_remote_browse_sync();
+ s = lp_remote_browse_sync(talloc_tos());
if (!*s)
return;
diff --git a/source3/nmbd/nmbd_serverlistdb.c b/source3/nmbd/nmbd_serverlistdb.c
index 01627c3331..ac16b5a98c 100644
--- a/source3/nmbd/nmbd_serverlistdb.c
+++ b/source3/nmbd/nmbd_serverlistdb.c
@@ -355,7 +355,7 @@ void write_browse_list(time_t t, bool force_write)
/* Output server details, plus what workgroup they're in. */
write_browse_list_entry(fp, my_netbios_names(i), stype,
- string_truncate(lp_serverstring(), MAX_SERVER_STRING_LENGTH), lp_workgroup());
+ string_truncate(lp_serverstring(talloc_tos()), MAX_SERVER_STRING_LENGTH), lp_workgroup());
}
for (subrec = FIRST_SUBNET; subrec ; subrec = NEXT_SUBNET_INCLUDING_UNICAST(subrec)) {
diff --git a/source3/nmbd/nmbd_winsserver.c b/source3/nmbd/nmbd_winsserver.c
index ff5fae70b1..87b9990a63 100644
--- a/source3/nmbd/nmbd_winsserver.c
+++ b/source3/nmbd/nmbd_winsserver.c
@@ -461,7 +461,7 @@ static void get_global_id_and_update(uint64_t *current_id, bool update)
static void wins_hook(const char *operation, struct name_record *namerec, int ttl)
{
char *command = NULL;
- char *cmd = lp_wins_hook();
+ char *cmd = lp_wins_hook(talloc_tos());
char *p, *namestr;
int i;
TALLOC_CTX *ctx = talloc_tos();
diff --git a/source3/nmbd/nmbd_workgroupdb.c b/source3/nmbd/nmbd_workgroupdb.c
index 43a28aa669..14b33b321e 100644
--- a/source3/nmbd/nmbd_workgroupdb.c
+++ b/source3/nmbd/nmbd_workgroupdb.c
@@ -254,7 +254,7 @@ workgroup %s on subnet %s\n", work->work_group, subrec->subnet_name));
stype &= ~(SV_TYPE_MASTER_BROWSER|SV_TYPE_POTENTIAL_BROWSER|SV_TYPE_DOMAIN_MASTER|SV_TYPE_DOMAIN_MEMBER);
create_server_on_workgroup(work,name,stype|SV_TYPE_LOCAL_LIST_ONLY, PERMANENT_TTL,
- string_truncate(lp_serverstring(), MAX_SERVER_STRING_LENGTH));
+ string_truncate(lp_serverstring(talloc_tos()), MAX_SERVER_STRING_LENGTH));
DEBUG(3,("initiate_myworkgroup_startup: Added server name entry %s \
on subnet %s\n", name, subrec->subnet_name));
}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index f8e7aced50..d834fd7bd0 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -4371,57 +4371,52 @@ static void init_printer_values(struct loadparm_service *pService)
case PRINT_TEST:
case PRINT_VLP: {
const char *tdbfile;
+ TALLOC_CTX *tmp_ctx = talloc_stackframe();
char *tmp;
tdbfile = talloc_asprintf(
- talloc_tos(), "tdbfile=%s",
+ tmp_ctx, "tdbfile=%s",
lp_parm_const_string(-1, "vlp", "tdbfile",
"/tmp/vlp.tdb"));
if (tdbfile == NULL) {
tdbfile="tdbfile=/tmp/vlp.tdb";
}
- tmp = talloc_asprintf(talloc_tos(), "vlp %s print %%p %%s",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s print %%p %%s",
tdbfile);
string_set(&pService->szPrintcommand,
tmp ? tmp : "vlp print %p %s");
- TALLOC_FREE(tmp);
- tmp = talloc_asprintf(talloc_tos(), "vlp %s lpq %%p",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s lpq %%p",
tdbfile);
string_set(&pService->szLpqcommand,
tmp ? tmp : "vlp lpq %p");
- TALLOC_FREE(tmp);
- tmp = talloc_asprintf(talloc_tos(), "vlp %s lprm %%p %%j",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s lprm %%p %%j",
tdbfile);
string_set(&pService->szLprmcommand,
tmp ? tmp : "vlp lprm %p %j");
- TALLOC_FREE(tmp);
- tmp = talloc_asprintf(talloc_tos(), "vlp %s lppause %%p %%j",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s lppause %%p %%j",
tdbfile);
string_set(&pService->szLppausecommand,
tmp ? tmp : "vlp lppause %p %j");
- TALLOC_FREE(tmp);
- tmp = talloc_asprintf(talloc_tos(), "vlp %s lpresume %%p %%j",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s lpresume %%p %%j",
tdbfile);
string_set(&pService->szLpresumecommand,
tmp ? tmp : "vlp lpresume %p %j");
- TALLOC_FREE(tmp);
- tmp = talloc_asprintf(talloc_tos(), "vlp %s queuepause %%p",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s queuepause %%p",
tdbfile);
string_set(&pService->szQueuepausecommand,
tmp ? tmp : "vlp queuepause %p");
- TALLOC_FREE(tmp);
- tmp = talloc_asprintf(talloc_tos(), "vlp %s queueresume %%p",
+ tmp = talloc_asprintf(tmp_ctx, "vlp %s queueresume %%p",
tdbfile);
string_set(&pService->szQueueresumecommand,
tmp ? tmp : "vlp queueresume %p");
- TALLOC_FREE(tmp);
+ TALLOC_FREE(tmp_ctx);
break;
}
@@ -4971,15 +4966,14 @@ static void init_globals(bool reinit_globals)
}
/*******************************************************************
- Convenience routine to grab string parameters into temporary memory
+ Convenience routine to grab string parameters into talloced memory
and run standard_sub_basic on them. The buffers can be written to by
callers without affecting the source string.
********************************************************************/
-static char *lp_string(const char *s)
+static char *lp_string(TALLOC_CTX *ctx, const char *s)
{
char *ret;
- TALLOC_CTX *ctx = talloc_tos();
/* The follow debug is useful for tracking down memory problems
especially if you have an inner loop that is calling a lp_*()
@@ -5015,7 +5009,7 @@ static char *lp_string(const char *s)
*/
#define FN_GLOBAL_STRING(fn_name,ptr) \
- char *lp_ ## fn_name(void) {return(lp_string(*(char **)(&Globals.ptr) ? *(char **)(&Globals.ptr) : ""));}
+char *lp_ ## fn_name(TALLOC_CTX *ctx) {return(lp_string((ctx), *(char **)(&Globals.ptr) ? *(char **)(&Globals.ptr) : ""));}
#define FN_GLOBAL_CONST_STRING(fn_name,ptr) \
const char *lp_ ## fn_name(void) {return(*(const char **)(&Globals.ptr) ? *(const char **)(&Globals.ptr) : "");}
#define FN_GLOBAL_LIST(fn_name,ptr) \
@@ -5028,7 +5022,7 @@ static char *lp_string(const char *s)
int lp_ ## fn_name(void) {return(*(int *)(&Globals.ptr));}
#define FN_LOCAL_STRING(fn_name,val) \
- char *lp_ ## fn_name(int i) {return(lp_string((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val));}
+char *lp_ ## fn_name(TALLOC_CTX *ctx,int i) {return(lp_string((ctx), (LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val));}
#define FN_LOCAL_CONST_STRING(fn_name,val) \
const char *lp_ ## fn_name(int i) {return (const char *)((LP_SNUM_OK(i) && ServicePtrs[(i)]->val) ? ServicePtrs[(i)]->val : sDefault.val);}
#define FN_LOCAL_LIST(fn_name,val) \
@@ -5289,20 +5283,19 @@ static int lp_enum(const char *s,const struct enum_list *_enum)
/* Return parametric option from a given service. Type is a part of option before ':' */
/* Parametric option has following syntax: 'Type: option = value' */
-/* the returned value is talloced on the talloc_tos() */
-char *lp_parm_talloc_string(int snum, const char *type, const char *option, const char *def)
+char *lp_parm_talloc_string(TALLOC_CTX *ctx, int snum, const char *type, const char *option, const char *def)
{
struct parmlist_entry *data = get_parametrics(snum, type, option);
if (data == NULL||data->value==NULL) {
if (def) {
- return lp_string(def);
+ return lp_string(ctx, def);
} else {
return NULL;
}
}
- return lp_string(data->value);
+ return lp_string(ctx, data->value);
}
/* Return parametric option from a given service. Type is a part of option before ':' */
@@ -5637,7 +5630,8 @@ bool lp_add_home(const char *pszHomename, int iDefaultService,
return false;
if (!(*(ServicePtrs[iDefaultService]->szPath))
- || strequal(ServicePtrs[iDefaultService]->szPath, lp_pathname(GLOBAL_SECTION_SNUM))) {
+ || strequal(ServicePtrs[iDefaultService]->szPath,
+ lp_pathname(talloc_tos(), GLOBAL_SECTION_SNUM))) {
string_set(&ServicePtrs[i]->szPath, pszHomedir);
}
@@ -6713,13 +6707,12 @@ static bool handle_realm(struct loadparm_context *unused, int snum, const char *
{
bool ret = true;
char *realm = strupper_talloc(talloc_tos(), pszParmValue);
- char *dnsdomain = strlower_talloc(talloc_tos(), pszParmValue);
+ char *dnsdomain = strlower_talloc(realm, pszParmValue);
ret &= string_set(&Globals.szRealm, pszParmValue);
ret &= string_set(&Globals.szRealm_upper, realm);
ret &= string_set(&Globals.szRealm_lower, dnsdomain);
TALLOC_FREE(realm);
- TALLOC_FREE(dnsdomain);
return ret;
}
@@ -6912,12 +6905,11 @@ static bool handle_debug_list(struct loadparm_context *unused, int snum, const c
Handle ldap suffixes - default to ldapsuffix if sub-suffixes are not defined.
***************************************************************************/
-static const char *append_ldap_suffix( const char *str )
+static const char *append_ldap_suffix(TALLOC_CTX *ctx, const char *str )
{
const char *suffix_string;
-
- suffix_string = talloc_asprintf(talloc_tos(), "%s,%s", str,
+ suffix_string = talloc_asprintf(ctx, "%s,%s", str,
Globals.szLdapSuffix );
if ( !suffix_string ) {
DEBUG(0,("append_ldap_suffix: talloc_asprintf() failed!\n"));
@@ -6927,36 +6919,36 @@ static const char *append_ldap_suffix( const char *str )
return suffix_string;
}
-const char *lp_ldap_machine_suffix(void)
+const char *lp_ldap_machine_suffix(TALLOC_CTX *ctx)
{
if (Globals.szLdapMachineSuffix[0])
- return append_ldap_suffix(Globals.szLdapMachineSuffix);
+ return append_ldap_suffix(ctx, Globals.szLdapMachineSuffix);
- return lp_string(Globals.szLdapSuffix);
+ return lp_string(ctx, Globals.szLdapSuffix);
}
-const char *lp_ldap_user_suffix(void)
+const char *lp_ldap_user_suffix(TALLOC_CTX *ctx)
{
if (Globals.szLdapUserSuffix[0])
- return append_ldap_suffix(Globals.szLdapUserSuffix);
+ return append_ldap_suffix(ctx, Globals.szLdapUserSuffix);
- return lp_string(Globals.szLdapSuffix);
+ return lp_string(ctx, Globals.szLdapSuffix);
}
-const char *lp_ldap_group_suffix(void)
+const char *lp_ldap_group_suffix(TALLOC_CTX *ctx)
{
if (Globals.szLdapGroupSuffix[0])
- return append_ldap_suffix(Globals.szLdapGroupSuffix);
+ return append_ldap_suffix(ctx, Globals.szLdapGroupSuffix);
- return lp_string(Globals.szLdapSuffix);
+ return lp_string(ctx, Globals.szLdapSuffix);
}
-const char *lp_ldap_idmap_suffix(void)
+const char *lp_ldap_idmap_suffix(TALLOC_CTX *ctx)
{
if (Globals.szLdapIdmapSuffix[0])
- return append_ldap_suffix(Globals.szLdapIdmapSuffix);
+ return append_ldap_suffix(ctx, Globals.szLdapIdmapSuffix);
- return lp_string(Globals.szLdapSuffix);
+ return lp_string(ctx, Globals.szLdapSuffix);
}
/****************************************************************************
@@ -8508,6 +8500,7 @@ int load_usershare_shares(struct smbd_server_connection *sconn,
int snum_template = -1;
const char *usersharepath = Globals.szUsersharePath;
int ret = lp_numservices();
+ TALLOC_CTX *tmp_ctx;
if (max_user_shares == 0 || *usersharepath == '\0') {
return lp_numservices();
@@ -8630,18 +8623,25 @@ int load_usershare_shares(struct smbd_server_connection *sconn,
/* Sweep through and delete any non-refreshed usershares that are
not currently in use. */
+ tmp_ctx = talloc_stackframe();
for (iService = iNumServices - 1; iService >= 0; iService--) {
if (VALID(iService) && (ServicePtrs[iService]->usershare == USERSHARE_PENDING_DELETE)) {
+ char *servname;
+
if (snumused && snumused(sconn, iService)) {
continue;
}
+
+ servname = lp_servicename(tmp_ctx, iService);
+
/* Remove from the share ACL db. */
DEBUG(10,("load_usershare_shares: Removing deleted usershare %s\n",
- lp_servicename(iService) ));
- delete_share_security(lp_servicename(iService));
+ servname ));
+ delete_share_security(servname);
free_service_byindex(iService);
}
}
+ talloc_free(tmp_ctx);
return lp_numservices();
}
@@ -8791,7 +8791,7 @@ static bool lp_load_ex(const char *pszFname,
}
{
- char *serv = lp_auto_services();
+ char *serv = lp_auto_services(talloc_tos());
lp_add_auto_services(serv);
TALLOC_FREE(serv);
}
@@ -9000,7 +9000,7 @@ int lp_servicenumber(const char *pszServiceName)
if (!usershare_exists(iService, &last_mod)) {
/* Remove the share security tdb entry for it. */
- delete_share_security(lp_servicename(iService));
+ delete_share_security(lp_servicename(talloc_tos(), iService));
/* Remove it from the array. */
free_service_byindex(iService);
/* Doesn't exist anymore. */
@@ -9029,16 +9029,16 @@ int lp_servicenumber(const char *pszServiceName)
A useful volume label function.
********************************************************************/
-const char *volume_label(int snum)
+const char *volume_label(TALLOC_CTX *ctx, int snum)
{
char *ret;
- const char *label = lp_volume(snum);
+ const char *label = lp_volume(ctx, snum);
if (!*label) {
- label = lp_servicename(snum);
+ label = lp_servicename(ctx, snum);
}
/* This returns a 33 byte guarenteed null terminated string. */
- ret = talloc_strndup(talloc_tos(), label, 32);
+ ret = talloc_strndup(ctx, label, 32);
if (!ret) {
return "";
}
@@ -9143,8 +9143,10 @@ void lp_copy_service(int snum, const char *new_name)
do_section(new_name, NULL);
if (snum >= 0) {
snum = lp_servicenumber(new_name);
- if (snum >= 0)
- lp_do_parameter(snum, "copy", lp_servicename(snum));
+ if (snum >= 0) {
+ char *name = lp_servicename(talloc_tos(), snum);
+ lp_do_parameter(snum, "copy", name);
+ }
}
}
@@ -9158,11 +9160,12 @@ void lp_set_name_resolve_order(const char *new_order)
string_set(&Globals.szNameResolveOrder, new_order);
}
-const char *lp_printername(int snum)
+const char *lp_printername(TALLOC_CTX *ctx, int snum)
{
- const char *ret = lp__printername(snum);
- if (ret == NULL || (ret != NULL && *ret == '\0'))
+ const char *ret = lp__printername(talloc_tos(), snum);
+ if (ret == NULL || *ret == '\0') {
ret = lp_const_servicename(snum);
+ }
return ret;
}
@@ -9372,7 +9375,7 @@ void widelinks_warning(int snum)
DEBUG(0,("Share '%s' has wide links and unix extensions enabled. "
"These parameters are incompatible. "
"Wide links will be disabled for this share.\n",
- lp_servicename(snum) ));
+ lp_servicename(talloc_tos(), snum) ));
}
}
diff --git a/source3/param/service.c b/source3/param/service.c
index f0cec4e216..5f0910fe0a 100644
--- a/source3/param/service.c
+++ b/source3/param/service.c
@@ -189,7 +189,7 @@ int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out)
}
/* Is it a usershare service ? */
- if (iService < 0 && *lp_usershare_path()) {
+ if (iService < 0 && *lp_usershare_path(talloc_tos())) {
/* Ensure the name is canonicalized. */
strlower_m(*p_service_out);
iService = load_usershare_service(*p_service_out);
@@ -197,7 +197,7 @@ int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out)
/* just possibly it's a default service? */
if (iService < 0) {
- char *pdefservice = lp_defaultservice();
+ char *pdefservice = lp_defaultservice(talloc_tos());
if (pdefservice &&
*pdefservice &&
!strequal(pdefservice, *p_service_out)
diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c
index fee1e00231..7a73fbfacf 100644
--- a/source3/passdb/pdb_interface.c
+++ b/source3/passdb/pdb_interface.c
@@ -458,11 +458,9 @@ static NTSTATUS pdb_default_create_user(struct pdb_methods *methods,
fstring name2;
if ((acb_info & ACB_NORMAL) && name[strlen(name)-1] != '$') {
- add_script = talloc_strdup(tmp_ctx,
- lp_adduser_script());
+ add_script = lp_adduser_script(tmp_ctx);
} else {
- add_script = talloc_strdup(tmp_ctx,
- lp_addmachine_script());
+ add_script = lp_addmachine_script(tmp_ctx);
}
if (!add_script || add_script[0] == '\0') {
@@ -556,7 +554,7 @@ static int smb_delete_user(const char *unix_user)
return -1;
}
- del_script = talloc_strdup(talloc_tos(), lp_deluser_script());
+ del_script = lp_deluser_script(talloc_tos());
if (!del_script || !*del_script) {
return -1;
}
diff --git a/source3/passdb/pdb_ipa.c b/source3/passdb/pdb_ipa.c
index c4c3bc8e11..bbd3339f2f 100644
--- a/source3/passdb/pdb_ipa.c
+++ b/source3/passdb/pdb_ipa.c
@@ -121,10 +121,10 @@ static char *get_account_dn(const char *name)
if (name[strlen(name)-1] == '$') {
dn = talloc_asprintf(talloc_tos(), "uid=%s,%s", escape_name,
- lp_ldap_machine_suffix());
+ lp_ldap_machine_suffix(talloc_tos()));
} else {
dn = talloc_asprintf(talloc_tos(), "uid=%s,%s", escape_name,
- lp_ldap_user_suffix());
+ lp_ldap_user_suffix(talloc_tos()));
}
SAFE_FREE(escape_name);
@@ -1364,11 +1364,11 @@ static NTSTATUS ipasam_create_user(struct pdb_methods *pdb_methods,
if (name[strlen(name)-1] == '$') {
dn = talloc_asprintf(tmp_ctx, "uid=%s,%s",
escape_username,
- lp_ldap_machine_suffix());
+ lp_ldap_machine_suffix(talloc_tos()));
} else {
dn = talloc_asprintf(tmp_ctx, "uid=%s,%s",
escape_username,
- lp_ldap_user_suffix());
+ lp_ldap_user_suffix(talloc_tos()));
}
SAFE_FREE(escape_username);
if (!dn) {
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
index 68ced934d3..e4dcbc370c 100644
--- a/source3/passdb/pdb_ldap.c
+++ b/source3/passdb/pdb_ldap.c
@@ -190,9 +190,9 @@ static NTSTATUS ldapsam_get_seq_num(struct pdb_methods *my_methods, time_t *seq_
return ntstatus;
}
- if (!smbldap_has_naming_context(ldap_state->smbldap_state->ldap_struct, lp_ldap_suffix())) {
+ if (!smbldap_has_naming_context(ldap_state->smbldap_state->ldap_struct, lp_ldap_suffix(talloc_tos()))) {
DEBUG(3,("ldapsam_get_seq_num: DIT not configured to hold %s "
- "as top-level namingContext\n", lp_ldap_suffix()));
+ "as top-level namingContext\n", lp_ldap_suffix(talloc_tos())));
return ntstatus;
}
@@ -215,7 +215,7 @@ static NTSTATUS ldapsam_get_seq_num(struct pdb_methods *my_methods, time_t *seq_
attrs[0] = talloc_strdup(mem_ctx, "syncreplCookie");
attrs[1] = NULL;
suffix = talloc_asprintf(mem_ctx,
- "cn=syncrepl%d,%s", rid, lp_ldap_suffix());
+ "cn=syncrepl%d,%s", rid, lp_ldap_suffix(talloc_tos()));
if (!suffix) {
ntstatus = NT_STATUS_NO_MEMORY;
goto done;
@@ -227,7 +227,7 @@ static NTSTATUS ldapsam_get_seq_num(struct pdb_methods *my_methods, time_t *seq_
attrs[0] = talloc_strdup(mem_ctx, "contextCSN");
attrs[1] = NULL;
suffix = talloc_asprintf(mem_ctx,
- "cn=ldapsync,%s", lp_ldap_suffix());
+ "cn=ldapsync,%s", lp_ldap_suffix(talloc_tos()));
if (!suffix) {
ntstatus = NT_STATUS_NO_MEMORY;
@@ -1998,7 +1998,7 @@ static NTSTATUS ldapsam_rename_sam_account(struct pdb_methods *my_methods,
oldname = pdb_get_username(old_acct);
/* rename the posix user */
- rename_script = talloc_strdup(talloc_tos(), lp_renameuser_script());
+ rename_script = lp_renameuser_script(talloc_tos());
if (rename_script == NULL) {
return NT_STATUS_NO_MEMORY;
}
@@ -2219,12 +2219,12 @@ static NTSTATUS ldapsam_add_sam_account(struct pdb_methods *my_methods, struct s
dn = talloc_asprintf(ctx,
"uid=%s,%s",
escape_username,
- lp_ldap_machine_suffix());
+ lp_ldap_machine_suffix(talloc_tos()));
} else {
dn = talloc_asprintf(ctx,
"uid=%s,%s",
escape_username,
- lp_ldap_user_suffix());
+ lp_ldap_user_suffix(talloc_tos()));
}
SAFE_FREE(escape_username);
@@ -2291,7 +2291,7 @@ static int ldapsam_search_one_group (struct ldapsam_privates *ldap_state,
attr_list = get_attr_list(NULL, groupmap_attr_list);
rc = smbldap_search(ldap_state->smbldap_state,
- lp_ldap_suffix (), scope,
+ lp_ldap_suffix (talloc_tos()), scope,
filter, attr_list, 0, result);
TALLOC_FREE(attr_list);
@@ -2623,7 +2623,7 @@ static NTSTATUS ldapsam_enum_group_members(struct pdb_methods *methods,
goto done;
}
- rc = smbldap_search(conn, lp_ldap_suffix(),
+ rc = smbldap_search(conn, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, id_attrs, 0,
&result);
@@ -2691,7 +2691,7 @@ static NTSTATUS ldapsam_enum_group_members(struct pdb_methods *methods,
goto done;
}
- rc = smbldap_search(conn, lp_ldap_suffix(),
+ rc = smbldap_search(conn, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, sid_attrs, 0,
&result);
@@ -2747,7 +2747,7 @@ static NTSTATUS ldapsam_enum_group_members(struct pdb_methods *methods,
LDAP_OBJ_SAMBASAMACCOUNT,
gidstr);
- rc = smbldap_search(conn, lp_ldap_suffix(),
+ rc = smbldap_search(conn, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, sid_attrs, 0,
&result);
@@ -2834,7 +2834,7 @@ static NTSTATUS ldapsam_enum_group_memberships(struct pdb_methods *methods,
goto done;
}
- rc = smbldap_search(conn, lp_ldap_suffix(),
+ rc = smbldap_search(conn, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
if (rc != LDAP_SUCCESS)
@@ -2875,7 +2875,7 @@ static NTSTATUS ldapsam_enum_group_memberships(struct pdb_methods *methods,
goto done;
}
- rc = smbldap_search(conn, lp_ldap_suffix(),
+ rc = smbldap_search(conn, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
if (rc != LDAP_SUCCESS)
@@ -3052,7 +3052,7 @@ static NTSTATUS ldapsam_add_group_mapping_entry(struct pdb_methods *methods,
goto done;
}
- rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_suffix(),
+ rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, attrs, True, &msg);
talloc_autofree_ldapmsg(mem_ctx, msg);
@@ -3113,7 +3113,7 @@ static NTSTATUS ldapsam_add_group_mapping_entry(struct pdb_methods *methods,
dn = talloc_asprintf(mem_ctx, "sambaSid=%s,%s",
sid_string_talloc(mem_ctx, &map->sid),
- lp_ldap_group_suffix());
+ lp_ldap_group_suffix(talloc_tos()));
if (dn == NULL) {
result = NT_STATUS_NO_MEMORY;
goto done;
@@ -3334,7 +3334,7 @@ static NTSTATUS ldapsam_setsamgrent(struct pdb_methods *my_methods,
return NT_STATUS_NO_MEMORY;
}
attr_list = get_attr_list( NULL, groupmap_attr_list );
- rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_suffix(),
+ rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter,
attr_list, 0, &ldap_state->result);
TALLOC_FREE(attr_list);
@@ -3343,7 +3343,7 @@ static NTSTATUS ldapsam_setsamgrent(struct pdb_methods *my_methods,
DEBUG(0, ("ldapsam_setsamgrent: LDAP search failed: %s\n",
ldap_err2string(rc)));
DEBUG(3, ("ldapsam_setsamgrent: Query was: %s, %s\n",
- lp_ldap_suffix(), filter));
+ lp_ldap_suffix(talloc_tos()), filter));
ldap_msgfree(ldap_state->result);
ldap_state->result = NULL;
TALLOC_FREE(filter);
@@ -3764,7 +3764,7 @@ static NTSTATUS ldapsam_alias_memberships(struct pdb_methods *methods,
result = ldap_state->search_cache.result;
ldap_state->search_cache.result = NULL;
} else {
- rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_suffix(),
+ rc = smbldap_search(ldap_state->smbldap_state, lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, attrs, 0, &result);
if (rc != LDAP_SUCCESS) {
return NT_STATUS_UNSUCCESSFUL;
@@ -4076,7 +4076,7 @@ static NTSTATUS ldapsam_lookup_rids(struct pdb_methods *methods,
}
rc = smbldap_search(ldap_state->smbldap_state,
- lp_ldap_user_suffix(),
+ lp_ldap_user_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, ldap_attrs, 0,
&msg);
talloc_autofree_ldapmsg(mem_ctx, msg);
@@ -4144,7 +4144,7 @@ static NTSTATUS ldapsam_lookup_rids(struct pdb_methods *methods,
}
rc = smbldap_search(ldap_state->smbldap_state,
- lp_ldap_suffix(),
+ lp_ldap_suffix(talloc_tos()),
LDAP_SCOPE_SUBTREE, filter, ldap_attrs, 0,
&msg);
talloc_autofree_ldapmsg(mem_ctx, msg);
@@ -4573,12 +4573,12 @@ static bool ldapsam_search_users(struct pdb_methods *methods,
state->connection = ldap_state->smbldap_state;
if ((acct_flags != 0) && ((acct_flags & ACB_NORMAL) != 0))
- state->base = lp_ldap_user_suffix();
+ state->base = lp_ldap_user_suffix(talloc_tos());
else if ((acct_flags != 0) &&
((acct_flags & (ACB_WSTRUST|ACB_SVRTRUST|ACB_DOMTRUST)) != 0))
- state->base = lp_ldap_machine_suffix();
+ state->base = lp_ldap_machine_suffix(talloc_tos());
else
- state->base = lp_ldap_suffix();
+ state->base = lp_ldap_suffix(talloc_tos());
state->acct_flags = acct_flags;
state->base = talloc_strdup(search, state->base);
@@ -4746,7 +4746,7 @@ static bool ldapsam_search_grouptype(struct pdb_methods *methods,
state->connection = ldap_state->smbldap_state;
- state->base = talloc_strdup(search, lp_ldap_suffix());
+ state->base = lp_ldap_suffix(search);
state->connection = ldap_state->smbldap_state;
state->scope = LDAP_SCOPE_SUBTREE;
state->filter = talloc_asprintf(search, "(&(objectclass=%s)"
@@ -5345,9 +5345,9 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods,
}
if (is_machine) {
- dn = talloc_asprintf(tmp_ctx, "uid=%s,%s", escape_name, lp_ldap_machine_suffix ());
+ dn = talloc_asprintf(tmp_ctx, "uid=%s,%s", escape_name, lp_ldap_machine_suffix (talloc_tos()));
} else {
- dn = talloc_asprintf(tmp_ctx, "uid=%s,%s", escape_name, lp_ldap_user_suffix ());
+ dn = talloc_asprintf(tmp_ctx, "uid=%s,%s", escape_name, lp_ldap_user_suffix (talloc_tos()));
}
SAFE_FREE(escape_name);
@@ -5610,7 +5610,7 @@ static NTSTATUS ldapsam_create_dom_group(struct pdb_methods *my_methods,
return NT_STATUS_NO_MEMORY;
}
- dn = talloc_asprintf(tmp_ctx, "cn=%s,%s", escape_name, lp_ldap_group_suffix());
+ dn = talloc_asprintf(tmp_ctx, "cn=%s,%s", escape_name, lp_ldap_group_suffix(talloc_tos()));
SAFE_FREE(escape_name);
diff --git a/source3/passdb/pdb_ldap_util.c b/source3/passdb/pdb_ldap_util.c
index 4c86201fb0..522c64fb5d 100644
--- a/source3/passdb/pdb_ldap_util.c
+++ b/source3/passdb/pdb_ldap_util.c
@@ -53,7 +53,7 @@ static NTSTATUS add_new_domain_account_policies(struct smbldap_state *ldap_state
if (asprintf(&dn, "%s=%s,%s",
get_attr_key2string(dominfo_attr_list, LDAP_ATTR_DOMAIN),
- escape_domain_name, lp_ldap_suffix()) < 0) {
+ escape_domain_name, lp_ldap_suffix(talloc_tos())) < 0) {
SAFE_FREE(escape_domain_name);
return NT_STATUS_NO_MEMORY;
}
@@ -174,7 +174,7 @@ static NTSTATUS add_new_domain_info(struct smbldap_state *ldap_state,
if (asprintf(&dn, "%s=%s,%s",
get_attr_key2string(dominfo_attr_list, LDAP_ATTR_DOMAIN),
- escape_domain_name, lp_ldap_suffix()) < 0) {
+ escape_domain_name, lp_ldap_suffix(talloc_tos())) < 0) {
SAFE_FREE(escape_domain_name);
return NT_STATUS_NO_MEMORY;
}
@@ -285,7 +285,7 @@ NTSTATUS smbldap_search_domain_info(struct smbldap_state *ldap_state,
if (rc != LDAP_SUCCESS) {
DEBUG(2,("smbldap_search_domain_info: Problem during LDAPsearch: %s\n", ldap_err2string (rc)));
- DEBUG(2,("smbldap_search_domain_info: Query was: %s, %s\n", lp_ldap_suffix(), filter));
+ DEBUG(2,("smbldap_search_domain_info: Query was: %s, %s\n", lp_ldap_suffix(talloc_tos()), filter));
goto failed;
}
diff --git a/source3/passdb/pdb_smbpasswd.c b/source3/passdb/pdb_smbpasswd.c
index 99b275de40..0703ea4607 100644
--- a/source3/passdb/pdb_smbpasswd.c
+++ b/source3/passdb/pdb_smbpasswd.c
@@ -1448,7 +1448,7 @@ static NTSTATUS smbpasswd_rename_sam_account (struct pdb_methods *my_methods,
TALLOC_CTX *ctx = talloc_tos();
NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
- if (!*(lp_renameuser_script()))
+ if (!*(lp_renameuser_script(talloc_tos())))
goto done;
if ( !(new_acct = samu_new( NULL )) ) {
@@ -1468,8 +1468,7 @@ static NTSTATUS smbpasswd_rename_sam_account (struct pdb_methods *my_methods,
interim_account = True;
/* rename the posix user */
- rename_script = talloc_strdup(ctx,
- lp_renameuser_script());
+ rename_script = lp_renameuser_script(ctx);
if (!rename_script) {
ret = NT_STATUS_NO_MEMORY;
goto done;
diff --git a/source3/passdb/pdb_tdb.c b/source3/passdb/pdb_tdb.c
index 8b923d6cd8..e0b6261eb9 100644
--- a/source3/passdb/pdb_tdb.c
+++ b/source3/passdb/pdb_tdb.c
@@ -991,7 +991,7 @@ static NTSTATUS tdbsam_rename_sam_account(struct pdb_methods *my_methods,
return NT_STATUS_NO_MEMORY;
}
- rename_script = talloc_strdup(new_acct, lp_renameuser_script());
+ rename_script = lp_renameuser_script(new_acct);
if (!rename_script) {
TALLOC_FREE(new_acct);
return NT_STATUS_NO_MEMORY;
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c
index 83d3e72059..dff855cce6 100644
--- a/source3/passdb/secrets.c
+++ b/source3/passdb/secrets.c
@@ -332,7 +332,7 @@ bool fetch_ldap_pw(char **dn, char** pw)
char *key = NULL;
size_t size = 0;
- *dn = smb_xstrdup(lp_ldap_admin_dn());
+ *dn = smb_xstrdup(lp_ldap_admin_dn(talloc_tos()));
if (asprintf(&key, "%s/%s", SECRETS_LDAP_BIND_PW, *dn) < 0) {
SAFE_FREE(*dn);
diff --git a/source3/printing/load.c b/source3/printing/load.c
index af4dcc7a2b..136d055088 100644
--- a/source3/printing/load.c
+++ b/source3/printing/load.c
@@ -40,7 +40,7 @@ static void add_auto_printers(void)
if (pnum < 0)
return;
- auto_serv = lp_auto_services();
+ auto_serv = lp_auto_services(talloc_tos());
str = SMB_STRDUP(auto_serv);
TALLOC_FREE(auto_serv);
if (str == NULL) {
diff --git a/source3/printing/notify.c b/source3/printing/notify.c
index b6b7ea045e..4040a2bab4 100644
--- a/source3/printing/notify.c
+++ b/source3/printing/notify.c
@@ -423,7 +423,7 @@ void notify_printer_status(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, uint32 status)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
if (sharename)
notify_printer_status_byname(ev, msg_ctx, sharename, status);
@@ -511,7 +511,7 @@ void notify_printer_driver(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *driver_name)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
@@ -523,7 +523,7 @@ void notify_printer_comment(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *comment)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
@@ -535,7 +535,7 @@ void notify_printer_sharename(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *share_name)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
@@ -547,7 +547,7 @@ void notify_printer_printername(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *printername)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
@@ -559,7 +559,7 @@ void notify_printer_port(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *port_name)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
@@ -571,7 +571,7 @@ void notify_printer_location(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *location)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
@@ -583,7 +583,7 @@ void notify_printer_sepfile(struct tevent_context *ev,
struct messaging_context *msg_ctx,
int snum, const char *sepfile)
{
- const char *sharename = lp_servicename(snum);
+ const char *sharename = lp_servicename(talloc_tos(), snum);
send_notify_field_buffer(
ev, msg_ctx,
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index b821d28326..5050a5d0dc 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -621,7 +621,7 @@ static uint32 get_correct_cversion(struct auth_session_info *session_info,
server_messaging_context(),
&conn,
printdollar_snum,
- lp_pathname(printdollar_snum),
+ lp_pathname(talloc_tos(), printdollar_snum),
session_info, &oldcwd);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0,("get_correct_cversion: create_conn_struct "
@@ -1008,7 +1008,7 @@ WERROR move_driver_to_download_area(struct auth_session_info *session_info,
server_messaging_context(),
&conn,
printdollar_snum,
- lp_pathname(printdollar_snum),
+ lp_pathname(talloc_tos(), printdollar_snum),
session_info, &oldcwd);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0,("move_driver_to_download_area: create_conn_struct "
@@ -1206,7 +1206,7 @@ bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
}
result = winreg_get_printer(mem_ctx, b,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
&pinfo2);
if (!W_ERROR_IS_OK(result)) {
continue; /* skip */
@@ -1544,7 +1544,7 @@ bool delete_driver_files(const struct auth_session_info *session_info,
server_messaging_context(),
&conn,
printdollar_snum,
- lp_pathname(printdollar_snum),
+ lp_pathname(talloc_tos(), printdollar_snum),
session_info, &oldcwd);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0,("delete_driver_files: create_conn_struct "
@@ -1728,7 +1728,7 @@ bool print_access_check(const struct auth_session_info *session_info,
/* Get printer name */
- pname = lp_printername(snum);
+ pname = lp_printername(talloc_tos(), snum);
if (!pname || !*pname) {
errno = EACCES;
diff --git a/source3/printing/nt_printing_ads.c b/source3/printing/nt_printing_ads.c
index 3551148565..87cab63ceb 100644
--- a/source3/printing/nt_printing_ads.c
+++ b/source3/printing/nt_printing_ads.c
@@ -366,7 +366,7 @@ WERROR check_published_printers(struct messaging_context *msg_ctx)
}
result = winreg_get_printer_internal(tmp_ctx, session_info, msg_ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
&pinfo2);
if (!W_ERROR_IS_OK(result)) {
continue;
diff --git a/source3/printing/nt_printing_os2.c b/source3/printing/nt_printing_os2.c
index 80c02ebc1a..de76d72940 100644
--- a/source3/printing/nt_printing_os2.c
+++ b/source3/printing/nt_printing_os2.c
@@ -73,7 +73,7 @@ static bool set_driver_mapping(const char *from, const char *to)
*/
WERROR spoolss_map_to_os2_driver(TALLOC_CTX *mem_ctx, const char **pdrivername)
{
- const char *mapfile = lp_os2_driver_map();
+ const char *mapfile = lp_os2_driver_map(talloc_tos());
char **lines = NULL;
const char *drivername;
int numlines = 0;
diff --git a/source3/printing/print_cups.c b/source3/printing/print_cups.c
index b5c7b0d4ec..d6903bc3ff 100644
--- a/source3/printing/print_cups.c
+++ b/source3/printing/print_cups.c
@@ -66,8 +66,8 @@ static http_t *cups_connect(TALLOC_CTX *frame)
int timeout = lp_cups_connection_timeout();
size_t size;
- if (lp_cups_server() != NULL && strlen(lp_cups_server()) > 0) {
- if (!push_utf8_talloc(frame, &server, lp_cups_server(), &size)) {
+ if (lp_cups_server(talloc_tos()) != NULL && strlen(lp_cups_server(talloc_tos())) > 0) {
+ if (!push_utf8_talloc(frame, &server, lp_cups_server(talloc_tos()), &size)) {
return NULL;
}
} else {
@@ -914,7 +914,8 @@ static int cups_job_submit(int snum, struct printjob *pjob,
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
- if (!push_utf8_talloc(frame, &printername, lp_printername(snum),
+ if (!push_utf8_talloc(frame, &printername,
+ lp_printername(talloc_tos(), snum),
&size)) {
goto out;
}
@@ -951,7 +952,8 @@ static int cups_job_submit(int snum, struct printjob *pjob,
* add any options defined in smb.conf
*/
- if (!push_utf8_talloc(frame, &cupsoptions, lp_cups_options(snum), &size)) {
+ if (!push_utf8_talloc(frame, &cupsoptions,
+ lp_cups_options(talloc_tos(), snum), &size)) {
goto out;
}
num_options = 0;
@@ -973,7 +975,7 @@ static int cups_job_submit(int snum, struct printjob *pjob,
if ((response = cupsDoFileRequest(http, request, uri, pjob->filename)) != NULL) {
if (response->request.status.status_code >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to print file to %s - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
} else {
ret = 0;
@@ -987,7 +989,7 @@ static int cups_job_submit(int snum, struct printjob *pjob,
}
} else {
DEBUG(0,("Unable to print file to `%s' - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
}
@@ -1412,8 +1414,8 @@ static int cups_queue_pause(int snum)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
- if (!push_utf8_talloc(frame, &printername, lp_printername(snum),
- &size)) {
+ if (!push_utf8_talloc(frame, &printername,
+ lp_printername(talloc_tos(), snum), &size)) {
goto out;
}
slprintf(uri, sizeof(uri) - 1, "ipp://localhost/printers/%s",
@@ -1434,14 +1436,14 @@ static int cups_queue_pause(int snum)
if ((response = cupsDoRequest(http, request, "/admin/")) != NULL) {
if (response->request.status.status_code >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to pause printer %s - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
} else {
ret = 0;
}
} else {
DEBUG(0,("Unable to pause printer %s - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
}
@@ -1516,7 +1518,7 @@ static int cups_queue_resume(int snum)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
"attributes-natural-language", NULL, language->language);
- if (!push_utf8_talloc(frame, &printername, lp_printername(snum),
+ if (!push_utf8_talloc(frame, &printername, lp_printername(talloc_tos(), snum),
&size)) {
goto out;
}
@@ -1538,14 +1540,14 @@ static int cups_queue_resume(int snum)
if ((response = cupsDoRequest(http, request, "/admin/")) != NULL) {
if (response->request.status.status_code >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to resume printer %s - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
} else {
ret = 0;
}
} else {
DEBUG(0,("Unable to resume printer %s - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
}
diff --git a/source3/printing/print_generic.c b/source3/printing/print_generic.c
index 8f557376d7..efe910d7b4 100644
--- a/source3/printing/print_generic.c
+++ b/source3/printing/print_generic.c
@@ -73,7 +73,7 @@ static int print_run_command(int snum, const char* printername, bool do_sub,
if (do_sub && snum != -1) {
syscmd = talloc_sub_advanced(ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
current_user_info.unix_name,
"",
current_user.ut.gid,
@@ -117,8 +117,8 @@ static int generic_job_pause(int snum, struct printjob *pjob)
/* need to pause the spooled entry */
slprintf(jobstr, sizeof(jobstr)-1, "%d", pjob->sysjob);
- return print_run_command(snum, lp_printername(snum), True,
- lp_lppausecommand(snum), NULL,
+ return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
+ lp_lppausecommand(talloc_tos(), snum), NULL,
"%j", jobstr,
NULL);
}
@@ -132,8 +132,8 @@ static int generic_job_resume(int snum, struct printjob *pjob)
/* need to pause the spooled entry */
slprintf(jobstr, sizeof(jobstr)-1, "%d", pjob->sysjob);
- return print_run_command(snum, lp_printername(snum), True,
- lp_lpresumecommand(snum), NULL,
+ return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
+ lp_lpresumecommand(talloc_tos(), snum), NULL,
"%j", jobstr,
NULL);
}
@@ -254,8 +254,8 @@ static int generic_job_submit(int snum, struct printjob *pjob,
slprintf(job_size, sizeof(job_size)-1, "%lu", (unsigned long)pjob->size);
/* send it to the system spooler */
- ret = print_run_command(snum, lp_printername(snum), True,
- lp_printcommand(snum), NULL,
+ ret = print_run_command(snum, lp_printername(talloc_tos(), snum), True,
+ lp_printcommand(talloc_tos(), snum), NULL,
"%s", p,
"%J", jobname,
"%f", p,
@@ -272,8 +272,8 @@ static int generic_job_submit(int snum, struct printjob *pjob,
* determine the backend job identifier (sysjob).
*/
pjob->sysjob = -1;
- ret = generic_queue_get(lp_printername(snum), printing_type, lpq_cmd,
- &q, &status);
+ ret = generic_queue_get(lp_printername(talloc_tos(), snum),
+ printing_type, lpq_cmd, &q, &status);
if (ret > 0) {
int i;
for (i = 0; i < ret; i++) {
@@ -307,8 +307,8 @@ static int generic_job_submit(int snum, struct printjob *pjob,
****************************************************************************/
static int generic_queue_pause(int snum)
{
- return print_run_command(snum, lp_printername(snum), True,
- lp_queuepausecommand(snum), NULL, NULL);
+ return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
+ lp_queuepausecommand(talloc_tos(), snum), NULL, NULL);
}
/****************************************************************************
@@ -316,8 +316,8 @@ static int generic_queue_pause(int snum)
****************************************************************************/
static int generic_queue_resume(int snum)
{
- return print_run_command(snum, lp_printername(snum), True,
- lp_queueresumecommand(snum), NULL, NULL);
+ return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
+ lp_queueresumecommand(talloc_tos(), snum), NULL, NULL);
}
/****************************************************************************
diff --git a/source3/printing/print_iprint.c b/source3/printing/print_iprint.c
index ea0c93778b..62073ddf89 100644
--- a/source3/printing/print_iprint.c
+++ b/source3/printing/print_iprint.c
@@ -50,10 +50,12 @@ iprint_passwd_cb(const char *prompt) /* I - Prompt */
static const char *iprint_server(void)
{
- if ((lp_iprint_server() != NULL) && (strlen(lp_iprint_server()) > 0)) {
+ const char *server = lp_iprint_server(talloc_tos());
+
+ if ((lp_iprint_server(server) != NULL) && (strlen(server) > 0)) {
DEBUG(10, ("iprint server explicitly set to %s\n",
- lp_iprint_server()));
- return lp_iprint_server();
+ server));
+ return server;
}
DEBUG(10, ("iprint server left to default %s\n", cupsServer()));
@@ -576,7 +578,7 @@ static int iprint_job_pause(int snum, struct printjob *pjob)
"attributes-natural-language", NULL, language->language);
slprintf(uri, sizeof(uri) - 1, "ipp://%s/ipp/%s", iprint_server(),
- lp_printername(snum));
+ lp_printername(talloc_tos(), snum));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
@@ -590,7 +592,7 @@ static int iprint_job_pause(int snum, struct printjob *pjob)
*/
slprintf(httpPath, sizeof(httpPath) - 1, "/ipp/%s",
- lp_printername(snum));
+ lp_printername(talloc_tos(), snum));
if ((response = cupsDoRequest(http, request, httpPath)) != NULL) {
if (response->request.status.status_code >= IPP_OK_CONFLICT) {
@@ -676,7 +678,7 @@ static int iprint_job_resume(int snum, struct printjob *pjob)
"attributes-natural-language", NULL, language->language);
slprintf(uri, sizeof(uri) - 1, "ipp://%s/ipp/%s", iprint_server(),
- lp_printername(snum));
+ lp_printername(talloc_tos(), snum));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
@@ -690,7 +692,7 @@ static int iprint_job_resume(int snum, struct printjob *pjob)
*/
slprintf(httpPath, sizeof(httpPath) - 1, "/ipp/%s",
- lp_printername(snum));
+ lp_printername(talloc_tos(), snum));
if ((response = cupsDoRequest(http, request, httpPath)) != NULL) {
if (response->request.status.status_code >= IPP_OK_CONFLICT) {
@@ -777,7 +779,7 @@ static int iprint_job_submit(int snum, struct printjob *pjob,
"attributes-natural-language", NULL, language->language);
slprintf(uri, sizeof(uri) - 1, "ipp://%s/ipp/%s", iprint_server(),
- lp_printername(snum));
+ lp_printername(talloc_tos(), snum));
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -796,19 +798,19 @@ static int iprint_job_submit(int snum, struct printjob *pjob,
* Do the request and get back a response...
*/
- slprintf(uri, sizeof(uri) - 1, "/ipp/%s", lp_printername(snum));
+ slprintf(uri, sizeof(uri) - 1, "/ipp/%s", lp_printername(talloc_tos(), snum));
if ((response = cupsDoFileRequest(http, request, uri, pjob->filename)) != NULL) {
if (response->request.status.status_code >= IPP_OK_CONFLICT) {
DEBUG(0,("Unable to print file to %s - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
} else {
ret = 0;
}
} else {
DEBUG(0,("Unable to print file to `%s' - %s\n",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
ippErrorString(cupsLastError())));
}
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index b473c9492f..9a7b110925 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -1660,15 +1660,15 @@ static void print_queue_update(struct messaging_context *msg_ctx,
/* don't strip out characters like '$' from the printername */
lpqcommand = talloc_string_sub2(ctx,
- lp_lpqcommand(snum),
+ lp_lpqcommand(talloc_tos(), snum),
"%p",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
false, false, false);
if (!lpqcommand) {
return;
}
lpqcommand = talloc_sub_advanced(ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
current_user_info.unix_name,
"",
current_user.ut.gid,
@@ -1680,15 +1680,15 @@ static void print_queue_update(struct messaging_context *msg_ctx,
}
lprmcommand = talloc_string_sub2(ctx,
- lp_lprmcommand(snum),
+ lp_lprmcommand(talloc_tos(), snum),
"%p",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
false, false, false);
if (!lprmcommand) {
return;
}
lprmcommand = talloc_sub_advanced(ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
current_user_info.unix_name,
"",
current_user.ut.gid,
@@ -2141,8 +2141,8 @@ static bool print_job_delete1(struct tevent_context *ev,
if (pjob->spooled && pjob->sysjob != -1)
{
result = (*(current_printif->job_delete))(
- lp_printername(snum),
- lp_lprmcommand(snum),
+ lp_printername(talloc_tos(), snum),
+ lp_lprmcommand(talloc_tos(), snum),
pjob);
/* Delete the tdb entry if the delete succeeded or the job hasn't
@@ -2230,7 +2230,7 @@ WERROR print_job_delete(const struct auth_session_info *server_info,
"Permission denied-- user not allowed to delete, \
pause, or resume print job. User name: %s. Printer name: %s.",
uidtoname(server_info->unix_token->uid),
- lp_printername(snum) );
+ lp_printername(talloc_tos(), snum) );
/* END_ADMIN_LOG */
werr = WERR_ACCESS_DENIED;
@@ -2320,7 +2320,7 @@ WERROR print_job_pause(const struct auth_session_info *server_info,
"Permission denied-- user not allowed to delete, \
pause, or resume print job. User name: %s. Printer name: %s.",
uidtoname(server_info->unix_token->uid),
- lp_printername(snum) );
+ lp_printername(talloc_tos(), snum) );
/* END_ADMIN_LOG */
werr = WERR_ACCESS_DENIED;
@@ -2392,7 +2392,7 @@ WERROR print_job_resume(const struct auth_session_info *server_info,
"Permission denied-- user not allowed to delete, \
pause, or resume print job. User name: %s. Printer name: %s.",
uidtoname(server_info->unix_token->uid),
- lp_printername(snum) );
+ lp_printername(talloc_tos(), snum) );
/* END_ADMIN_LOG */
werr = WERR_ACCESS_DENIED;
goto err_out;
@@ -2665,7 +2665,7 @@ static WERROR print_job_checks(const struct auth_session_info *server_info,
/* see if we have sufficient disk space */
if (lp_minprintspace(snum)) {
minspace = lp_minprintspace(snum);
- ret = sys_fsusage(lp_pathname(snum), &dspace, &dsize);
+ ret = sys_fsusage(lp_pathname(talloc_tos(), snum), &dspace, &dsize);
if (ret == 0 && dspace < 2*minspace) {
DEBUG(3, ("print_job_checks: "
"disk space check failed.\n"));
@@ -2710,7 +2710,7 @@ static WERROR print_job_spool_file(int snum, uint32_t jobid,
* Verify that the file name is ok, within path, and it is
* already already there */
if (output_file) {
- path = lp_pathname(snum);
+ path = lp_pathname(talloc_tos(), snum);
len = strlen(path);
if (strncmp(output_file, path, len) == 0 &&
(output_file[len - 1] == '/' || output_file[len] == '/')) {
@@ -2739,7 +2739,7 @@ static WERROR print_job_spool_file(int snum, uint32_t jobid,
}
slprintf(pjob->filename, sizeof(pjob->filename)-1,
- "%s/%s%.8u.XXXXXX", lp_pathname(snum),
+ "%s/%s%.8u.XXXXXX", lp_pathname(talloc_tos(), snum),
PRINT_SPOOL_PREFIX, (unsigned int)jobid);
pjob->fd = mkstemp(pjob->filename);
@@ -2784,7 +2784,7 @@ WERROR print_job_start(const struct auth_session_info *server_info,
return WERR_INTERNAL_DB_CORRUPTION;
}
- path = lp_pathname(snum);
+ path = lp_pathname(talloc_tos(), snum);
werr = print_job_checks(server_info, msg_ctx, snum, &njobs);
if (!W_ERROR_IS_OK(werr)) {
@@ -2974,16 +2974,16 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, int snum,
/* don't strip out characters like '$' from the printername */
lpq_cmd = talloc_string_sub2(tmp_ctx,
- lp_lpqcommand(snum),
+ lp_lpqcommand(talloc_tos(), snum),
"%p",
- lp_printername(snum),
+ lp_printername(talloc_tos(), snum),
false, false, false);
if (lpq_cmd == NULL) {
status = NT_STATUS_PRINT_CANCELLED;
goto fail;
}
lpq_cmd = talloc_sub_advanced(tmp_ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
current_user_info.unix_name,
"",
current_user.ut.gid,
@@ -3044,7 +3044,7 @@ static bool get_stored_queue_info(struct messaging_context *msg_ctx,
uint32 i;
int max_reported_jobs = lp_max_reported_jobs(snum);
bool ret = False;
- const char* sharename = lp_servicename(snum);
+ const char* sharename = lp_servicename(talloc_tos(), snum);
TALLOC_CTX *tmp_ctx = talloc_new(msg_ctx);
if (tmp_ctx == NULL) {
return false;
diff --git a/source3/printing/printspoolss.c b/source3/printing/printspoolss.c
index b94314e420..8a38a7fe7a 100644
--- a/source3/printing/printspoolss.c
+++ b/source3/printing/printspoolss.c
@@ -78,7 +78,7 @@ NTSTATUS print_spool_open(files_struct *fsp,
status = NT_STATUS_NO_MEMORY;
goto done;
}
- pf->svcname = talloc_strdup(pf, lp_servicename(SNUM(fsp->conn)));
+ pf->svcname = lp_servicename(pf, SNUM(fsp->conn));
/* the document name is derived from the file name.
* "Remote Downlevel Document" is added in front to
@@ -118,7 +118,8 @@ NTSTATUS print_spool_open(files_struct *fsp,
*/
pf->filename = talloc_asprintf(pf, "%s/%sXXXXXX",
- lp_pathname(SNUM(fsp->conn)),
+ lp_pathname(talloc_tos(),
+ SNUM(fsp->conn)),
PRINT_SPOOL_PREFIX);
if (!pf->filename) {
status = NT_STATUS_NO_MEMORY;
diff --git a/source3/printing/spoolssd.c b/source3/printing/spoolssd.c
index f4bba76bc7..bb043bdba7 100644
--- a/source3/printing/spoolssd.c
+++ b/source3/printing/spoolssd.c
@@ -58,7 +58,7 @@ pid_t start_spoolssd(struct tevent_context *ev_ctx,
static void spoolss_reopen_logs(int child_id)
{
- char *lfile = lp_logfile();
+ char *lfile = lp_logfile(talloc_tos());
char *ext;
int rc;
@@ -80,10 +80,12 @@ static void spoolss_reopen_logs(int child_id)
if (strstr(lfile, ext) == NULL) {
if (child_id) {
rc = asprintf(&lfile, "%s.%d",
- lp_logfile(), child_id);
+ lp_logfile(talloc_tos()),
+ child_id);
} else {
rc = asprintf(&lfile, "%s.%s",
- lp_logfile(), ext);
+ lp_logfile(talloc_tos()),
+ ext);
}
}
}
@@ -607,14 +609,14 @@ static void print_queue_forward(struct messaging_context *msg,
static char *get_bq_logfile(void)
{
- char *lfile = lp_logfile();
+ char *lfile = lp_logfile(talloc_tos());
int rc;
if (lfile == NULL || lfile[0] == '\0') {
rc = asprintf(&lfile, "%s/log.%s.bq",
get_dyn_LOGFILEBASE(), DAEMON_NAME);
} else {
- rc = asprintf(&lfile, "%s.bq", lp_logfile());
+ rc = asprintf(&lfile, "%s.bq", lp_logfile(talloc_tos()));
}
if (rc == -1) {
lfile = NULL;
diff --git a/source3/rpc_server/epmd.c b/source3/rpc_server/epmd.c
index 46b5c52bb7..f30372edad 100644
--- a/source3/rpc_server/epmd.c
+++ b/source3/rpc_server/epmd.c
@@ -38,7 +38,7 @@ void start_epmd(struct tevent_context *ev_ctx,
static void epmd_reopen_logs(void)
{
- char *lfile = lp_logfile();
+ char *lfile = lp_logfile(talloc_tos());
int rc;
if (lfile == NULL || lfile[0] == '\0') {
@@ -49,7 +49,8 @@ static void epmd_reopen_logs(void)
}
} else {
if (strstr(lfile, DAEMON_NAME) == NULL) {
- rc = asprintf(&lfile, "%s.%s", lp_logfile(), DAEMON_NAME);
+ rc = asprintf(&lfile, "%s.%s",
+ lp_logfile(talloc_tos()), DAEMON_NAME);
if (rc > 0) {
lp_set_logfile(lfile);
SAFE_FREE(lfile);
diff --git a/source3/rpc_server/lsasd.c b/source3/rpc_server/lsasd.c
index 8be70984db..fd6c248294 100644
--- a/source3/rpc_server/lsasd.c
+++ b/source3/rpc_server/lsasd.c
@@ -61,7 +61,7 @@ void start_lsasd(struct tevent_context *ev_ctx,
static void lsasd_reopen_logs(int child_id)
{
- char *lfile = lp_logfile();
+ char *lfile = lp_logfile(talloc_tos());
char *extension;
int rc;
@@ -82,11 +82,11 @@ static void lsasd_reopen_logs(int child_id)
if (strstr(lfile, extension) == NULL) {
if (child_id) {
rc = asprintf(&lfile, "%s.%d",
- lp_logfile(),
+ lp_logfile(talloc_tos()),
child_id);
} else {
rc = asprintf(&lfile, "%s.%s",
- lp_logfile(),
+ lp_logfile(talloc_tos()),
extension);
}
}
diff --git a/source3/rpc_server/samr/srv_samr_chgpasswd.c b/source3/rpc_server/samr/srv_samr_chgpasswd.c
index 94d7021349..51c0d0f96a 100644
--- a/source3/rpc_server/samr/srv_samr_chgpasswd.c
+++ b/source3/rpc_server/samr/srv_samr_chgpasswd.c
@@ -582,12 +582,12 @@ bool chgpasswd(const char *name, const char *rhost, const struct passwd *pass,
return false;
}
- passwordprogram = talloc_strdup(ctx, lp_passwd_program());
+ passwordprogram = lp_passwd_program(ctx);
if (!passwordprogram || !*passwordprogram) {
DEBUG(2, ("chgpasswd: Null password program - no password changing\n"));
return false;
}
- chatsequence = talloc_strdup(ctx, lp_passwd_chat());
+ chatsequence = lp_passwd_chat(ctx);
if (!chatsequence || !*chatsequence) {
DEBUG(2, ("chgpasswd: Null chat sequence - no password changing\n"));
return false;
@@ -938,12 +938,12 @@ NTSTATUS check_password_complexity(const char *username,
char *cmd;
/* Use external script to check password complexity */
- if ((lp_check_password_script() == NULL)
- || (*(lp_check_password_script()) == '\0')) {
+ if ((lp_check_password_script(tosctx) == NULL)
+ || (*(lp_check_password_script(tosctx)) == '\0')) {
return NT_STATUS_OK;
}
- cmd = talloc_string_sub(tosctx, lp_check_password_script(), "%u",
+ cmd = talloc_string_sub(tosctx, lp_check_password_script(tosctx), "%u",
username);
if (!cmd) {
return NT_STATUS_PASSWORD_RESTRICTION;
diff --git a/source3/rpc_server/samr/srv_samr_nt.c b/source3/rpc_server/samr/srv_samr_nt.c
index d7cebb4535..1065f2ac6a 100644
--- a/source3/rpc_server/samr/srv_samr_nt.c
+++ b/source3/rpc_server/samr/srv_samr_nt.c
@@ -545,7 +545,8 @@ NTSTATUS _samr_GetUserPwInfo(struct pipes_struct *p,
&password_properties);
unbecome_root();
- if (lp_check_password_script() && *lp_check_password_script()) {
+ if (lp_check_password_script(talloc_tos())
+ && *lp_check_password_script(talloc_tos())) {
password_properties |= DOMAIN_PASSWORD_COMPLEX;
}
@@ -2050,7 +2051,8 @@ NTSTATUS _samr_ChangePasswordUser3(struct pipes_struct *p,
unix_to_nt_time_abs((NTTIME *)&dominfo->max_password_age, u_expire);
unix_to_nt_time_abs((NTTIME *)&dominfo->min_password_age, u_min_age);
- if (lp_check_password_script() && *lp_check_password_script()) {
+ if (lp_check_password_script(talloc_tos())
+ && *lp_check_password_script(talloc_tos())) {
dominfo->password_properties |= DOMAIN_PASSWORD_COMPLEX;
}
@@ -3313,7 +3315,7 @@ static NTSTATUS query_dom_info_1(TALLOC_CTX *mem_ctx,
unix_to_nt_time_abs((NTTIME *)&r->max_password_age, u_expire);
unix_to_nt_time_abs((NTTIME *)&r->min_password_age, u_min_age);
- if (lp_check_password_script() && *lp_check_password_script()) {
+ if (lp_check_password_script(talloc_tos()) && *lp_check_password_script(talloc_tos())) {
r->password_properties |= DOMAIN_PASSWORD_COMPLEX;
}
@@ -3350,7 +3352,7 @@ static NTSTATUS query_dom_info_2(TALLOC_CTX *mem_ctx,
unbecome_root();
- r->oem_information.string = lp_serverstring();
+ r->oem_information.string = lp_serverstring(r);
r->domain_name.string = lp_workgroup();
r->primary.string = lp_netbios_name();
r->sequence_num = seq_num;
@@ -3394,7 +3396,7 @@ static NTSTATUS query_dom_info_3(TALLOC_CTX *mem_ctx,
static NTSTATUS query_dom_info_4(TALLOC_CTX *mem_ctx,
struct samr_DomOEMInformation *r)
{
- r->oem_information.string = lp_serverstring();
+ r->oem_information.string = lp_serverstring(r);
return NT_STATUS_OK;
}
@@ -6266,7 +6268,7 @@ NTSTATUS _samr_GetDomPwInfo(struct pipes_struct *p,
&password_properties);
unbecome_root();
- if (lp_check_password_script() && *lp_check_password_script()) {
+ if (lp_check_password_script(talloc_tos()) && *lp_check_password_script(talloc_tos())) {
password_properties |= DOMAIN_PASSWORD_COMPLEX;
}
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index e0612ac36c..ff342dea92 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -374,7 +374,7 @@ static WERROR delete_printer_hook(TALLOC_CTX *ctx, struct security_token *token,
const char *sharename,
struct messaging_context *msg_ctx)
{
- char *cmd = lp_deleteprinter_cmd();
+ char *cmd = lp_deleteprinter_cmd(talloc_tos());
char *command = NULL;
int ret;
bool is_print_op = false;
@@ -2772,7 +2772,7 @@ static void spoolss_notify_share_name(struct messaging_context *msg_ctx,
struct spoolss_PrinterInfo2 *pinfo2,
TALLOC_CTX *mem_ctx)
{
- SETUP_SPOOLSS_NOTIFY_DATA_STRING(data, lp_servicename(snum));
+ SETUP_SPOOLSS_NOTIFY_DATA_STRING(data, lp_servicename(talloc_tos(), snum));
}
/*******************************************************************
@@ -2818,7 +2818,7 @@ static void spoolss_notify_comment(struct messaging_context *msg_ctx,
const char *p;
if (*pinfo2->comment == '\0') {
- p = lp_comment(snum);
+ p = lp_comment(talloc_tos(), snum);
} else {
p = pinfo2->comment;
}
@@ -3385,7 +3385,7 @@ static bool construct_notify_printer_info(struct messaging_context *msg_ctx,
DEBUG(4,("construct_notify_printer_info: Notify type: [%s], number of notify info: [%d] on printer: [%s]\n",
(type == PRINTER_NOTIFY_TYPE ? "PRINTER_NOTIFY_TYPE" : "JOB_NOTIFY_TYPE"),
- option_type->count, lp_servicename(snum)));
+ option_type->count, lp_servicename(talloc_tos(), snum)));
for(field_num=0; field_num < option_type->count; field_num++) {
field = option_type->fields[field_num].field;
@@ -3552,12 +3552,12 @@ static WERROR printserver_notify_info(struct pipes_struct *p,
result = winreg_get_printer_internal(mem_ctx,
get_session_info_system(),
p->msg_ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
&pinfo2);
if (!W_ERROR_IS_OK(result)) {
DEBUG(4, ("printserver_notify_info: "
"Failed to get printer [%s]\n",
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
continue;
}
@@ -3640,7 +3640,7 @@ static WERROR printer_notify_info(struct pipes_struct *p,
result = winreg_get_printer_internal(mem_ctx,
get_session_info_system(),
p->msg_ctx,
- lp_servicename(snum), &pinfo2);
+ lp_servicename(talloc_tos(), snum), &pinfo2);
if (!W_ERROR_IS_OK(result)) {
return WERR_BADFID;
}
@@ -3929,7 +3929,7 @@ static WERROR construct_printer_info1(TALLOC_CTX *mem_ctx,
r->flags = flags;
if (info2->comment == NULL || info2->comment[0] == '\0') {
- r->comment = talloc_strdup(mem_ctx, lp_comment(snum));
+ r->comment = lp_comment(mem_ctx, snum);
} else {
r->comment = talloc_strdup(mem_ctx, info2->comment); /* saved comment */
}
@@ -3979,7 +3979,7 @@ static WERROR construct_printer_info2(TALLOC_CTX *mem_ctx,
return result;
}
- r->sharename = talloc_strdup(mem_ctx, lp_servicename(snum));
+ r->sharename = lp_servicename(mem_ctx, snum);
W_ERROR_HAVE_NO_MEMORY(r->sharename);
r->portname = talloc_strdup(mem_ctx, info2->portname);
W_ERROR_HAVE_NO_MEMORY(r->portname);
@@ -3987,7 +3987,7 @@ static WERROR construct_printer_info2(TALLOC_CTX *mem_ctx,
W_ERROR_HAVE_NO_MEMORY(r->drivername);
if (info2->comment[0] == '\0') {
- r->comment = talloc_strdup(mem_ctx, lp_comment(snum));
+ r->comment = lp_comment(mem_ctx, snum);
} else {
r->comment = talloc_strdup(mem_ctx, info2->comment);
}
@@ -4170,7 +4170,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
if (is_printer_published(mem_ctx, session_info, msg_ctx,
servername,
- lp_servicename(snum), &guid, NULL)) {
+ lp_servicename(talloc_tos(), snum), &guid, NULL)) {
r->guid = talloc_strdup_upper(mem_ctx, GUID_string2(mem_ctx, &guid));
r->action = DSPRINT_PUBLISH;
} else {
@@ -6089,7 +6089,7 @@ static bool check_printer_ok(TALLOC_CTX *mem_ctx,
static WERROR add_port_hook(TALLOC_CTX *ctx, struct security_token *token, const char *portname, const char *uri)
{
- char *cmd = lp_addport_cmd();
+ char *cmd = lp_addport_cmd(talloc_tos());
char *command = NULL;
int ret;
bool is_print_op = false;
@@ -6150,7 +6150,7 @@ static bool add_printer_hook(TALLOC_CTX *ctx, struct security_token *token,
const char *remote_machine,
struct messaging_context *msg_ctx)
{
- char *cmd = lp_addprinter_cmd();
+ char *cmd = lp_addprinter_cmd(talloc_tos());
char **qlines;
char *command = NULL;
int numlines;
@@ -6705,7 +6705,7 @@ static WERROR update_printer(struct pipes_struct *p,
/* Call addprinter hook */
/* Check changes to see if this is really needed */
- if (*lp_addprinter_cmd() &&
+ if (*lp_addprinter_cmd(talloc_tos()) &&
(!strequal(printer->drivername, old_printer->drivername) ||
!strequal(printer->comment, old_printer->comment) ||
!strequal(printer->portname, old_printer->portname) ||
@@ -6785,7 +6785,7 @@ static WERROR publish_or_unpublish_printer(struct pipes_struct *p,
result = winreg_get_printer_internal(p->mem_ctx,
get_session_info_system(),
p->msg_ctx,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
&pinfo2);
if (!W_ERROR_IS_OK(result)) {
return WERR_BADFID;
@@ -6961,7 +6961,7 @@ static WERROR fill_job_info1(TALLOC_CTX *mem_ctx,
r->job_id = queue->sysjob;
- r->printer_name = talloc_strdup(mem_ctx, lp_servicename(snum));
+ r->printer_name = lp_servicename(mem_ctx, snum);
W_ERROR_HAVE_NO_MEMORY(r->printer_name);
r->server_name = talloc_strdup(mem_ctx, pinfo2->servername);
W_ERROR_HAVE_NO_MEMORY(r->server_name);
@@ -7002,7 +7002,7 @@ static WERROR fill_job_info2(TALLOC_CTX *mem_ctx,
r->job_id = queue->sysjob;
- r->printer_name = talloc_strdup(mem_ctx, lp_servicename(snum));
+ r->printer_name = lp_servicename(mem_ctx, snum);
W_ERROR_HAVE_NO_MEMORY(r->printer_name);
r->server_name = talloc_strdup(mem_ctx, pinfo2->servername);
W_ERROR_HAVE_NO_MEMORY(r->server_name);
@@ -7779,7 +7779,7 @@ static WERROR fill_port_2(TALLOC_CTX *mem_ctx,
static WERROR enumports_hook(TALLOC_CTX *ctx, int *count, char ***lines)
{
- char *cmd = lp_enumports_cmd();
+ char *cmd = lp_enumports_cmd(talloc_tos());
char **qlines = NULL;
char *command = NULL;
int numlines;
@@ -8043,7 +8043,7 @@ static WERROR spoolss_addprinterex_level_2(struct pipes_struct *p,
/* FIXME!!! smbd should check to see if the driver is installed before
trying to add a printer like this --jerry */
- if (*lp_addprinter_cmd() ) {
+ if (*lp_addprinter_cmd(talloc_tos()) ) {
char *raddr;
raddr = tsocket_address_inet_addr_string(p->remote_address,
@@ -9572,7 +9572,7 @@ WERROR _spoolss_SetPrinterDataEx(struct pipes_struct *p,
}
result = winreg_get_printer(tmp_ctx, b,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
&pinfo2);
if (!W_ERROR_IS_OK(result)) {
goto done;
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index e61fd2f47f..7f34ec28e0 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -261,7 +261,7 @@ static enum srvsvc_ShareType get_share_type(int snum)
type = lp_administrative_share(snum)
? STYPE_PRINTQ_HIDDEN : STYPE_PRINTQ;
}
- if (strequal(lp_fstype(snum), "IPC")) {
+ if (strequal(lp_fstype(talloc_tos(), snum), "IPC")) {
type = lp_administrative_share(snum)
? STYPE_IPC_HIDDEN : STYPE_IPC;
}
@@ -275,7 +275,7 @@ static enum srvsvc_ShareType get_share_type(int snum)
static void init_srv_share_info_0(struct pipes_struct *p,
struct srvsvc_NetShareInfo0 *r, int snum)
{
- r->name = lp_servicename(snum);
+ r->name = lp_servicename(talloc_tos(), snum);
}
/*******************************************************************
@@ -286,13 +286,13 @@ static void init_srv_share_info_1(struct pipes_struct *p,
struct srvsvc_NetShareInfo1 *r,
int snum)
{
- char *net_name = lp_servicename(snum);
- char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
+ char *net_name = lp_servicename(talloc_tos(), snum);
+ char *remark = lp_comment(p->mem_ctx, snum);
if (remark) {
remark = talloc_sub_advanced(
- p->mem_ctx, lp_servicename(snum),
- get_current_username(), lp_pathname(snum),
+ p->mem_ctx, lp_servicename(talloc_tos(), snum),
+ get_current_username(), lp_pathname(talloc_tos(), snum),
p->session_info->unix_token->uid, get_current_username(),
"", remark);
}
@@ -314,18 +314,18 @@ static void init_srv_share_info_2(struct pipes_struct *p,
char *path = NULL;
int max_connections = lp_max_connections(snum);
uint32_t max_uses = max_connections!=0 ? max_connections : (uint32_t)-1;
- char *net_name = lp_servicename(snum);
+ char *net_name = lp_servicename(talloc_tos(), snum);
- remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
+ remark = lp_comment(p->mem_ctx, snum);
if (remark) {
remark = talloc_sub_advanced(
- p->mem_ctx, lp_servicename(snum),
- get_current_username(), lp_pathname(snum),
+ p->mem_ctx, lp_servicename(talloc_tos(), snum),
+ get_current_username(), lp_pathname(talloc_tos(), snum),
p->session_info->unix_token->uid, get_current_username(),
"", remark);
}
path = talloc_asprintf(p->mem_ctx,
- "C:%s", lp_pathname(snum));
+ "C:%s", lp_pathname(talloc_tos(), snum));
if (path) {
/*
@@ -379,13 +379,13 @@ static void map_generic_share_sd_bits(struct security_descriptor *psd)
static void init_srv_share_info_501(struct pipes_struct *p,
struct srvsvc_NetShareInfo501 *r, int snum)
{
- const char *net_name = lp_servicename(snum);
- char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
+ const char *net_name = lp_servicename(talloc_tos(), snum);
+ char *remark = lp_comment(p->mem_ctx, snum);
if (remark) {
remark = talloc_sub_advanced(
- p->mem_ctx, lp_servicename(snum),
- get_current_username(), lp_pathname(snum),
+ p->mem_ctx, lp_servicename(talloc_tos(), snum),
+ get_current_username(), lp_pathname(talloc_tos(), snum),
p->session_info->unix_token->uid, get_current_username(),
"", remark);
}
@@ -403,22 +403,22 @@ static void init_srv_share_info_501(struct pipes_struct *p,
static void init_srv_share_info_502(struct pipes_struct *p,
struct srvsvc_NetShareInfo502 *r, int snum)
{
- const char *net_name = lp_servicename(snum);
+ const char *net_name = lp_servicename(talloc_tos(), snum);
char *path = NULL;
struct security_descriptor *sd = NULL;
struct sec_desc_buf *sd_buf = NULL;
size_t sd_size = 0;
TALLOC_CTX *ctx = p->mem_ctx;
- char *remark = talloc_strdup(ctx, lp_comment(snum));
+ char *remark = lp_comment(ctx, snum);
if (remark) {
remark = talloc_sub_advanced(
- p->mem_ctx, lp_servicename(snum),
- get_current_username(), lp_pathname(snum),
+ p->mem_ctx, lp_servicename(talloc_tos(), snum),
+ get_current_username(), lp_pathname(talloc_tos(), snum),
p->session_info->unix_token->uid, get_current_username(),
"", remark);
}
- path = talloc_asprintf(ctx, "C:%s", lp_pathname(snum));
+ path = talloc_asprintf(ctx, "C:%s", lp_pathname(talloc_tos(), snum));
if (path) {
/*
* Change / to \\ so that win2k will see it as a valid path. This was added to
@@ -427,7 +427,7 @@ static void init_srv_share_info_502(struct pipes_struct *p,
string_replace(path, '/', '\\');
}
- sd = get_share_security(ctx, lp_servicename(snum), &sd_size);
+ sd = get_share_security(ctx, lp_servicename(talloc_tos(), snum), &sd_size);
sd_buf = make_sec_desc_buf(p->mem_ctx, sd_size, sd);
@@ -450,12 +450,12 @@ static void init_srv_share_info_1004(struct pipes_struct *p,
struct srvsvc_NetShareInfo1004 *r,
int snum)
{
- char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum));
+ char *remark = lp_comment(p->mem_ctx, snum);
if (remark) {
remark = talloc_sub_advanced(
- p->mem_ctx, lp_servicename(snum),
- get_current_username(), lp_pathname(snum),
+ p->mem_ctx, lp_servicename(talloc_tos(), snum),
+ get_current_username(), lp_pathname(talloc_tos(), snum),
p->session_info->unix_token->uid, get_current_username(),
"", remark);
}
@@ -518,7 +518,7 @@ static void init_srv_share_info_1501(struct pipes_struct *p,
size_t sd_size;
TALLOC_CTX *ctx = p->mem_ctx;
- sd = get_share_security(ctx, lp_servicename(snum), &sd_size);
+ sd = get_share_security(ctx, lp_servicename(talloc_tos(), snum), &sd_size);
if (sd) {
sd_buf = make_sec_desc_buf(p->mem_ctx, sd_size, sd);
}
@@ -532,7 +532,7 @@ static void init_srv_share_info_1501(struct pipes_struct *p,
static bool is_hidden_share(int snum)
{
- const char *net_name = lp_servicename(snum);
+ const char *net_name = lp_servicename(talloc_tos(), snum);
return (net_name[strlen(net_name) - 1] == '$') ? True : False;
}
@@ -547,7 +547,8 @@ static bool is_enumeration_allowed(struct pipes_struct *p,
return true;
return share_access_check(p->session_info->security_token,
- lp_servicename(snum), FILE_READ_DATA, NULL);
+ lp_servicename(talloc_tos(), snum),
+ FILE_READ_DATA, NULL);
}
/*******************************************************************
@@ -589,12 +590,12 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p,
is_enumeration_allowed(p, snum) &&
(all_shares || !is_hidden_share(snum)) ) {
DEBUG(10, ("counting service %s\n",
- lp_servicename(snum) ? lp_servicename(snum) : "(null)"));
+ lp_servicename(talloc_tos(), snum) ? lp_servicename(talloc_tos(), snum) : "(null)"));
allowed[snum] = true;
num_entries++;
} else {
DEBUG(10, ("NOT counting service %s\n",
- lp_servicename(snum) ? lp_servicename(snum) : "(null)"));
+ lp_servicename(talloc_tos(), snum) ? lp_servicename(talloc_tos(), snum) : "(null)"));
}
}
@@ -1155,7 +1156,7 @@ WERROR _srvsvc_NetSrvGetInfo(struct pipes_struct *p,
info102->version_major = SAMBA_MAJOR_NBT_ANNOUNCE_VERSION;
info102->version_minor = SAMBA_MINOR_NBT_ANNOUNCE_VERSION;
info102->server_type = lp_default_server_announce();
- info102->comment = string_truncate(lp_serverstring(),
+ info102->comment = string_truncate(lp_serverstring(talloc_tos()),
MAX_SERVER_STRING_LENGTH);
info102->users = 0xffffffff;
info102->disc = 0xf;
@@ -1181,7 +1182,7 @@ WERROR _srvsvc_NetSrvGetInfo(struct pipes_struct *p,
info101->version_major = SAMBA_MAJOR_NBT_ANNOUNCE_VERSION;
info101->version_minor = SAMBA_MINOR_NBT_ANNOUNCE_VERSION;
info101->server_type = lp_default_server_announce();
- info101->comment = string_truncate(lp_serverstring(),
+ info101->comment = string_truncate(lp_serverstring(talloc_tos()),
MAX_SERVER_STRING_LENGTH);
r->out.info->info101 = info101;
@@ -1588,7 +1589,7 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
switch (r->in.level) {
case 1:
- pathname = talloc_strdup(ctx, lp_pathname(snum));
+ pathname = lp_pathname(ctx, snum);
comment = talloc_strdup(ctx, info->info1->comment);
type = info->info1->type;
psd = NULL;
@@ -1617,7 +1618,7 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
map_generic_share_sd_bits(psd);
break;
case 1004:
- pathname = talloc_strdup(ctx, lp_pathname(snum));
+ pathname = lp_pathname(ctx, snum);
comment = talloc_strdup(ctx, info->info1004->comment);
type = STYPE_DISKTREE;
break;
@@ -1638,8 +1639,8 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
case 1007:
return WERR_ACCESS_DENIED;
case 1501:
- pathname = talloc_strdup(ctx, lp_pathname(snum));
- comment = talloc_strdup(ctx, lp_comment(snum));
+ pathname = lp_pathname(ctx, snum);
+ comment = lp_comment(ctx, snum);
psd = info->info1501->sd;
map_generic_share_sd_bits(psd);
type = STYPE_DISKTREE;
@@ -1675,20 +1676,20 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
string_replace(comment, '"', ' ');
DEBUG(10,("_srvsvc_NetShareSetInfo: change share command = %s\n",
- lp_change_share_cmd() ? lp_change_share_cmd() : "NULL" ));
+ lp_change_share_cmd(talloc_tos()) ? lp_change_share_cmd(talloc_tos()) : "NULL" ));
/* Only call modify function if something changed. */
- if (strcmp(path, lp_pathname(snum)) || strcmp(comment, lp_comment(snum))
+ if (strcmp(path, lp_pathname(talloc_tos(), snum)) || strcmp(comment, lp_comment(talloc_tos(), snum))
|| (lp_max_connections(snum) != max_connections)) {
- if (!lp_change_share_cmd() || !*lp_change_share_cmd()) {
+ if (!lp_change_share_cmd(talloc_tos()) || !*lp_change_share_cmd(talloc_tos())) {
DEBUG(10,("_srvsvc_NetShareSetInfo: No change share command\n"));
return WERR_ACCESS_DENIED;
}
command = talloc_asprintf(p->mem_ctx,
"%s \"%s\" \"%s\" \"%s\" \"%s\" %d",
- lp_change_share_cmd(),
+ lp_change_share_cmd(talloc_tos()),
get_dyn_CONFIGFILE(),
share_name,
path,
@@ -1733,7 +1734,7 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
struct security_descriptor *old_sd;
size_t sd_size;
- old_sd = get_share_security(p->mem_ctx, lp_servicename(snum), &sd_size);
+ old_sd = get_share_security(p->mem_ctx, lp_servicename(talloc_tos(), snum), &sd_size);
if (old_sd && !security_descriptor_equal(old_sd, psd)) {
if (!set_share_security(share_name, psd))
@@ -1781,7 +1782,7 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p,
if (p->session_info->unix_token->uid != sec_initial_uid() && !is_disk_op )
return WERR_ACCESS_DENIED;
- if (!lp_add_share_cmd() || !*lp_add_share_cmd()) {
+ if (!lp_add_share_cmd(talloc_tos()) || !*lp_add_share_cmd(talloc_tos())) {
DEBUG(10,("_srvsvc_NetShareAdd: No add share command\n"));
return WERR_ACCESS_DENIED;
}
@@ -1877,7 +1878,7 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p,
command = talloc_asprintf(ctx,
"%s \"%s\" \"%s\" \"%s\" \"%s\" %d",
- lp_add_share_cmd(),
+ lp_add_share_cmd(talloc_tos()),
get_dyn_CONFIGFILE(),
share_name_in,
path,
@@ -1987,16 +1988,16 @@ WERROR _srvsvc_NetShareDel(struct pipes_struct *p,
if (p->session_info->unix_token->uid != sec_initial_uid() && !is_disk_op )
return WERR_ACCESS_DENIED;
- if (!lp_delete_share_cmd() || !*lp_delete_share_cmd()) {
+ if (!lp_delete_share_cmd(talloc_tos()) || !*lp_delete_share_cmd(talloc_tos())) {
DEBUG(10,("_srvsvc_NetShareDel: No delete share command\n"));
return WERR_ACCESS_DENIED;
}
command = talloc_asprintf(ctx,
"%s \"%s\" \"%s\"",
- lp_delete_share_cmd(),
+ lp_delete_share_cmd(talloc_tos()),
get_dyn_CONFIGFILE(),
- lp_servicename(snum));
+ lp_servicename(talloc_tos(), snum));
if (!command) {
return WERR_NOMEM;
}
@@ -2025,7 +2026,7 @@ WERROR _srvsvc_NetShareDel(struct pipes_struct *p,
return WERR_ACCESS_DENIED;
/* Delete the SD in the database. */
- delete_share_security(lp_servicename(params->service));
+ delete_share_security(lp_servicename(talloc_tos(), params->service));
lp_killservice(params->service);
@@ -2138,7 +2139,7 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
server_event_context(),
server_messaging_context(),
&conn,
- snum, lp_pathname(snum),
+ snum, lp_pathname(talloc_tos(), snum),
p->session_info, &oldcwd);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(10, ("create_conn_struct failed: %s\n",
@@ -2282,7 +2283,7 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p,
server_event_context(),
server_messaging_context(),
&conn,
- snum, lp_pathname(snum),
+ snum, lp_pathname(talloc_tos(), snum),
p->session_info, &oldcwd);
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(10, ("create_conn_struct failed: %s\n",
diff --git a/source3/rpc_server/winreg/srv_winreg_nt.c b/source3/rpc_server/winreg/srv_winreg_nt.c
index 176848b0d6..38040d4e51 100644
--- a/source3/rpc_server/winreg/srv_winreg_nt.c
+++ b/source3/rpc_server/winreg/srv_winreg_nt.c
@@ -528,7 +528,7 @@ WERROR _winreg_InitiateSystemShutdownEx(struct pipes_struct *p,
int ret = -1;
bool can_shutdown = false;
- shutdown_script = talloc_strdup(p->mem_ctx, lp_shutdown_script());
+ shutdown_script = lp_shutdown_script(p->mem_ctx);
if (!shutdown_script) {
return WERR_NOMEM;
}
@@ -610,7 +610,7 @@ WERROR _winreg_InitiateSystemShutdownEx(struct pipes_struct *p,
WERROR _winreg_AbortSystemShutdown(struct pipes_struct *p,
struct winreg_AbortSystemShutdown *r)
{
- const char *abort_shutdown_script = lp_abort_shutdown_script();
+ const char *abort_shutdown_script = lp_abort_shutdown_script(talloc_tos());
int ret = -1;
bool can_shutdown = false;
@@ -661,7 +661,7 @@ static int validate_reg_filename(TALLOC_CTX *ctx, char **pp_fname )
continue;
}
- share_path = lp_pathname(snum);
+ share_path = lp_pathname(talloc_tos(), snum);
/* make sure we have a path (e.g. [homes] ) */
if (strlen(share_path) == 0) {
@@ -712,7 +712,7 @@ WERROR _winreg_RestoreKey(struct pipes_struct *p,
}
DEBUG(2,("_winreg_RestoreKey: Restoring [%s] from %s in share %s\n",
- regkey->key->name, fname, lp_servicename(snum) ));
+ regkey->key->name, fname, lp_servicename(talloc_tos(), snum) ));
return reg_restorekey(regkey, fname);
}
@@ -746,7 +746,7 @@ WERROR _winreg_SaveKey(struct pipes_struct *p,
return WERR_OBJECT_PATH_INVALID;
DEBUG(2,("_winreg_SaveKey: Saving [%s] to %s in share %s\n",
- regkey->key->name, fname, lp_servicename(snum) ));
+ regkey->key->name, fname, lp_servicename(talloc_tos(), snum) ));
return reg_savekey(regkey, fname);
}
diff --git a/source3/smbd/close.c b/source3/smbd/close.c
index a3eedbfa6b..8633f82c0a 100644
--- a/source3/smbd/close.c
+++ b/source3/smbd/close.c
@@ -46,7 +46,7 @@ static NTSTATUS check_magic(struct files_struct *fsp)
char *fname = NULL;
NTSTATUS status;
- if (!*lp_magicscript(SNUM(conn))) {
+ if (!*lp_magicscript(talloc_tos(), SNUM(conn))) {
return NT_STATUS_OK;
}
@@ -62,13 +62,13 @@ static NTSTATUS check_magic(struct files_struct *fsp)
p++;
}
- if (!strequal(lp_magicscript(SNUM(conn)),p)) {
+ if (!strequal(lp_magicscript(talloc_tos(), SNUM(conn)),p)) {
status = NT_STATUS_OK;
goto out;
}
- if (*lp_magicoutput(SNUM(conn))) {
- magic_output = lp_magicoutput(SNUM(conn));
+ if (*lp_magicoutput(talloc_tos(), SNUM(conn))) {
+ magic_output = lp_magicoutput(talloc_tos(), SNUM(conn));
} else {
magic_output = talloc_asprintf(ctx,
"%s.out",
@@ -906,7 +906,7 @@ static NTSTATUS rmdir_internals(TALLOC_CTX *ctx, files_struct *fsp)
return NT_STATUS_OK;
}
- if(((errno == ENOTEMPTY)||(errno == EEXIST)) && *lp_veto_files(SNUM(conn))) {
+ if(((errno == ENOTEMPTY)||(errno == EEXIST)) && *lp_veto_files(talloc_tos(), SNUM(conn))) {
/*
* Check to see if the only thing in this directory are
* vetoed files/directories. If so then delete them and
diff --git a/source3/smbd/conn_idle.c b/source3/smbd/conn_idle.c
index 60263667c1..916a2067ad 100644
--- a/source3/smbd/conn_idle.c
+++ b/source3/smbd/conn_idle.c
@@ -112,7 +112,8 @@ void conn_force_tdis(struct smbd_server_connection *sconn, const char *sharename
if (close_all) {
do_close = true;
- } else if (strequal(lp_servicename(SNUM(conn)), sharename)) {
+ } else if (strequal(lp_servicename(talloc_tos(), SNUM(conn)),
+ sharename)) {
DEBUG(1, ("conn_force_tdis: Forcing close of "
"share '%s' (wire_id=0x%08x)\n",
tcon->global->share_name,
diff --git a/source3/smbd/connection.c b/source3/smbd/connection.c
index 846a173ad7..d334e8bdc1 100644
--- a/source3/smbd/connection.c
+++ b/source3/smbd/connection.c
@@ -136,7 +136,8 @@ bool connections_snum_used(struct smbd_server_connection *unused, int snum)
{
int active;
- active = count_current_connections(lp_servicename(snum), true);
+ active = count_current_connections(lp_servicename(talloc_tos(), snum),
+ true);
if (active > 0) {
return true;
}
@@ -173,12 +174,12 @@ bool claim_connection(connection_struct *conn, const char *name)
crec.cnum = conn->cnum;
crec.uid = conn->session_info->unix_token->uid;
crec.gid = conn->session_info->unix_token->gid;
- strlcpy(crec.servicename, lp_servicename(SNUM(conn)),
+ strlcpy(crec.servicename, lp_servicename(rec, SNUM(conn)),
sizeof(crec.servicename));
crec.start = time(NULL);
raddr = tsocket_address_inet_addr_string(conn->sconn->remote_address,
- talloc_tos());
+ rec);
if (raddr == NULL) {
return false;
}
diff --git a/source3/smbd/dfree.c b/source3/smbd/dfree.c
index 1a73132ae5..cb80e18d4a 100644
--- a/source3/smbd/dfree.c
+++ b/source3/smbd/dfree.c
@@ -80,7 +80,7 @@ uint64_t sys_disk_free(connection_struct *conn, const char *path, bool small_que
* If external disk calculation specified, use it.
*/
- dfree_command = lp_dfree_command(SNUM(conn));
+ dfree_command = lp_dfree_command(talloc_tos(), SNUM(conn));
if (dfree_command && *dfree_command) {
const char *p;
char **lines = NULL;
diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c
index 747ba2169a..836ffd0de5 100644
--- a/source3/smbd/dosmode.c
+++ b/source3/smbd/dosmode.c
@@ -889,7 +889,7 @@ NTSTATUS file_set_sparse(connection_struct *conn,
"on readonly share[%s]\n",
smb_fname_str_dbg(fsp->fsp_name),
sparse,
- lp_servicename(SNUM(conn))));
+ lp_servicename(talloc_tos(), SNUM(conn))));
return NT_STATUS_MEDIA_WRITE_PROTECTED;
}
diff --git a/source3/smbd/fake_file.c b/source3/smbd/fake_file.c
index ffc8d78020..d052d4965d 100644
--- a/source3/smbd/fake_file.c
+++ b/source3/smbd/fake_file.c
@@ -134,7 +134,7 @@ NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn,
if (!NT_STATUS_IS_OK(status)) {
DEBUG(10, ("open_fake_file: smbd_calculate_access_mask "
"on service[%s] file[%s] returned %s\n",
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
smb_fname_str_dbg(smb_fname),
nt_errstr(status)));
return status;
@@ -144,7 +144,7 @@ NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn,
if (geteuid() != sec_initial_uid()) {
DEBUG(3, ("open_fake_file_shared: access_denied to "
"service[%s] file[%s] user[%s]\n",
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
smb_fname_str_dbg(smb_fname),
conn->session_info->unix_info->unix_name));
return NT_STATUS_ACCESS_DENIED;
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index 5809abdf5f..1b5de57ad4 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -110,13 +110,13 @@ static int CopyExpanded(connection_struct *conn,
*p_space_remaining = 0;
return 0;
}
- buf = talloc_string_sub(ctx, buf,"%S",lp_servicename(snum));
+ buf = talloc_string_sub(ctx, buf,"%S", lp_servicename(ctx, snum));
if (!buf) {
*p_space_remaining = 0;
return 0;
}
buf = talloc_sub_advanced(ctx,
- lp_servicename(SNUM(conn)),
+ lp_servicename(ctx, SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
@@ -162,12 +162,12 @@ static int StrlenExpanded(connection_struct *conn, int snum, char *s)
if (!buf) {
return 0;
}
- buf = talloc_string_sub(ctx,buf,"%S",lp_servicename(snum));
+ buf = talloc_string_sub(ctx,buf,"%S",lp_servicename(ctx, snum));
if (!buf) {
return 0;
}
buf = talloc_sub_advanced(ctx,
- lp_servicename(SNUM(conn)),
+ lp_servicename(ctx, SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
@@ -1906,10 +1906,10 @@ static int fill_share_info(connection_struct *conn, int snum, int uLevel,
len = 0;
if (uLevel > 0) {
- len += StrlenExpanded(conn,snum,lp_comment(snum));
+ len += StrlenExpanded(conn,snum,lp_comment(talloc_tos(), snum));
}
if (uLevel > 1) {
- len += strlen(lp_pathname(snum)) + 1;
+ len += strlen(lp_pathname(talloc_tos(), snum)) + 1;
}
if (buflen) {
*buflen = struct_len;
@@ -1938,7 +1938,7 @@ static int fill_share_info(connection_struct *conn, int snum, int uLevel,
baseaddr = p;
}
- push_ascii(p,lp_servicename(snum),13, STR_TERMINATE);
+ push_ascii(p,lp_servicename(talloc_tos(), snum),13, STR_TERMINATE);
if (uLevel > 0) {
int type;
@@ -1948,12 +1948,12 @@ static int fill_share_info(connection_struct *conn, int snum, int uLevel,
if (lp_print_ok(snum)) {
type = STYPE_PRINTQ;
}
- if (strequal("IPC",lp_fstype(snum))) {
+ if (strequal("IPC",lp_fstype(talloc_tos(),snum))) {
type = STYPE_IPC;
}
SSVAL(p,14,type); /* device type */
SIVAL(p,16,PTR_DIFF(p2,baseaddr));
- len += CopyExpanded(conn,snum,&p2,lp_comment(snum),&l2);
+ len += CopyExpanded(conn,snum,&p2,lp_comment(talloc_tos(),snum),&l2);
}
if (uLevel > 1) {
@@ -1961,7 +1961,7 @@ static int fill_share_info(connection_struct *conn, int snum, int uLevel,
SSVALS(p,22,-1); /* max uses */
SSVAL(p,24,1); /* current uses */
SIVAL(p,26,PTR_DIFF(p2,baseaddr)); /* local pathname */
- len += CopyAndAdvance(&p2,lp_pathname(snum),&l2);
+ len += CopyAndAdvance(&p2,lp_pathname(talloc_tos(),snum),&l2);
memset(p+30,0,SHPWLEN+2); /* passwd (reserved), pad field */
}
@@ -2101,7 +2101,7 @@ static bool api_RNetShareEnum(struct smbd_server_connection *sconn,
if (!(lp_browseable(i) && lp_snum_ok(i))) {
continue;
}
- push_ascii_fstring(servicename_dos, lp_servicename(i));
+ push_ascii_fstring(servicename_dos, lp_servicename(talloc_tos(), i));
/* Maximum name length = 13. */
if( lp_browseable( i ) && lp_snum_ok( i ) && (strlen(servicename_dos) < 13)) {
total++;
@@ -2133,7 +2133,8 @@ static bool api_RNetShareEnum(struct smbd_server_connection *sconn,
continue;
}
- push_ascii_fstring(servicename_dos, lp_servicename(i));
+ push_ascii_fstring(servicename_dos,
+ lp_servicename(talloc_tos(), i));
if (lp_browseable(i) && lp_snum_ok(i) && (strlen(servicename_dos) < 13)) {
if (fill_share_info( conn,i,uLevel,&p,&f_len,&p2,&s_len,*rdata ) < 0) {
break;
diff --git a/source3/smbd/mangle.c b/source3/smbd/mangle.c
index 49599c1ee1..55da33a258 100644
--- a/source3/smbd/mangle.c
+++ b/source3/smbd/mangle.c
@@ -45,7 +45,7 @@ static void mangle_init(void)
if (mangle_fns)
return;
- method = lp_mangling_method();
+ method = lp_mangling_method(talloc_tos());
/* find the first mangling method that manages to initialise and
matches the "mangling method" parameter */
diff --git a/source3/smbd/message.c b/source3/smbd/message.c
index 8ae588b511..59949e21ae 100644
--- a/source3/smbd/message.c
+++ b/source3/smbd/message.c
@@ -51,7 +51,7 @@ static void msg_deliver(struct msg_state *state)
fstring alpha_buf;
char *s;
- if (! (*lp_msg_command())) {
+ if (! (*lp_msg_command(frame))) {
DEBUG(1,("no messaging command specified\n"));
goto done;
}
@@ -96,7 +96,7 @@ static void msg_deliver(struct msg_state *state)
close(fd);
/* run the command */
- s = talloc_strdup(talloc_tos(), lp_msg_command());
+ s = lp_msg_command(frame);
if (s == NULL) {
goto done;
}
@@ -146,7 +146,7 @@ void reply_sends(struct smb_request *req)
START_PROFILE(SMBsends);
- if (!(*lp_msg_command())) {
+ if (!(*lp_msg_command(talloc_tos()))) {
reply_nterror(req, NT_STATUS_REQUEST_NOT_ACCEPTED);
END_PROFILE(SMBsends);
return;
@@ -194,7 +194,7 @@ void reply_sendstrt(struct smb_request *req)
START_PROFILE(SMBsendstrt);
- if (!(*lp_msg_command())) {
+ if (!(*lp_msg_command(talloc_tos()))) {
reply_nterror(req, NT_STATUS_REQUEST_NOT_ACCEPTED);
END_PROFILE(SMBsendstrt);
return;
@@ -244,7 +244,7 @@ void reply_sendtxt(struct smb_request *req)
START_PROFILE(SMBsendtxt);
- if (! (*lp_msg_command())) {
+ if (! (*lp_msg_command(talloc_tos()))) {
reply_nterror(req, NT_STATUS_REQUEST_NOT_ACCEPTED);
END_PROFILE(SMBsendtxt);
return;
@@ -293,7 +293,7 @@ void reply_sendend(struct smb_request *req)
{
START_PROFILE(SMBsendend);
- if (! (*lp_msg_command())) {
+ if (! (*lp_msg_command(talloc_tos()))) {
reply_nterror(req, NT_STATUS_REQUEST_NOT_ACCEPTED);
END_PROFILE(SMBsendend);
return;
diff --git a/source3/smbd/msdfs.c b/source3/smbd/msdfs.c
index 6f182b4920..97775d6a9d 100644
--- a/source3/smbd/msdfs.c
+++ b/source3/smbd/msdfs.c
@@ -147,9 +147,9 @@ static NTSTATUS parse_dfs_path(connection_struct *conn,
}
/* Is this really our servicename ? */
- if (conn && !( strequal(servicename, lp_servicename(SNUM(conn)))
+ if (conn && !( strequal(servicename, lp_servicename(talloc_tos(), SNUM(conn)))
|| (strequal(servicename, HOMES_NAME)
- && strequal(lp_servicename(SNUM(conn)),
+ && strequal(lp_servicename(talloc_tos(), SNUM(conn)),
get_current_username()) )) ) {
DEBUG(10,("parse_dfs_path: %s is not our servicename\n",
servicename));
@@ -249,7 +249,7 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
connpath = talloc_string_sub(conn,
connpath,
"%S",
- lp_servicename(snum));
+ lp_servicename(talloc_tos(), snum));
if (!connpath) {
TALLOC_FREE(conn);
return NT_STATUS_NO_MEMORY;
@@ -304,7 +304,8 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
*/
if (conn->session_info) {
share_access_check(conn->session_info->security_token,
- lp_servicename(snum), MAXIMUM_ALLOWED_ACCESS,
+ lp_servicename(talloc_tos(), snum),
+ MAXIMUM_ALLOWED_ACCESS,
&conn->share_access);
if ((conn->share_access & FILE_WRITE_DATA) == 0) {
@@ -313,7 +314,7 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
DEBUG(0,("create_conn_struct: connection to %s "
"denied due to security "
"descriptor.\n",
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
conn_free(conn);
return NT_STATUS_ACCESS_DENIED;
} else {
@@ -333,7 +334,7 @@ NTSTATUS create_conn_struct(TALLOC_CTX *ctx,
}
/* this must be the first filesystem operation that we do */
- if (SMB_VFS_CONNECT(conn, lp_servicename(snum), vfs_user) < 0) {
+ if (SMB_VFS_CONNECT(conn, lp_servicename(talloc_tos(), snum), vfs_user) < 0) {
DEBUG(0,("VFS connect failed!\n"));
conn_free(conn);
return NT_STATUS_UNSUCCESSFUL;
@@ -779,9 +780,9 @@ static NTSTATUS dfs_redirect(TALLOC_CTX *ctx,
return NT_STATUS_OK;
}
- if (!( strequal(pdp->servicename, lp_servicename(SNUM(conn)))
+ if (!( strequal(pdp->servicename, lp_servicename(talloc_tos(), SNUM(conn)))
|| (strequal(pdp->servicename, HOMES_NAME)
- && strequal(lp_servicename(SNUM(conn)),
+ && strequal(lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->sanitized_username) )) ) {
/* The given sharename doesn't match this connection. */
@@ -906,7 +907,7 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx,
}
}
- if (!lp_msdfs_root(snum) && (*lp_msdfs_proxy(snum) == '\0')) {
+ if (!lp_msdfs_root(snum) && (*lp_msdfs_proxy(talloc_tos(), snum) == '\0')) {
DEBUG(3,("get_referred_path: |%s| in dfs path %s is not "
"a dfs root.\n",
pdp->servicename, dfs_path));
@@ -926,7 +927,7 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx,
char *tmp;
struct referral *ref;
- if (*lp_msdfs_proxy(snum) == '\0') {
+ if (*lp_msdfs_proxy(talloc_tos(), snum) == '\0') {
TALLOC_FREE(pdp);
return self_ref(ctx,
dfs_path,
@@ -946,7 +947,7 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx,
return NT_STATUS_NO_MEMORY;
}
- if (!(tmp = talloc_strdup(ctx, lp_msdfs_proxy(snum)))) {
+ if (!(tmp = talloc_strdup(ctx, lp_msdfs_proxy(talloc_tos(), snum)))) {
TALLOC_FREE(pdp);
return NT_STATUS_NO_MEMORY;
}
@@ -983,7 +984,7 @@ NTSTATUS get_referred_path(TALLOC_CTX *ctx,
server_event_context(),
server_messaging_context(),
&conn, snum,
- lp_pathname(snum), NULL, &oldpath);
+ lp_pathname(talloc_tos(), snum), NULL, &oldpath);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(pdp);
return status;
@@ -1133,7 +1134,7 @@ bool create_junction(TALLOC_CTX *ctx,
jucn->service_name = talloc_strdup(ctx, pdp->servicename);
jucn->volume_name = talloc_strdup(ctx, pdp->reqpath);
- jucn->comment = talloc_strdup(ctx, lp_comment(snum));
+ jucn->comment = lp_comment(ctx, snum);
TALLOC_FREE(pdp);
if (!jucn->service_name || !jucn->volume_name || ! jucn->comment) {
@@ -1162,14 +1163,14 @@ static bool junction_to_local_path(const struct junction_map *jucn,
server_event_context(),
server_messaging_context(),
conn_out,
- snum, lp_pathname(snum), NULL, oldpath);
+ snum, lp_pathname(talloc_tos(), snum), NULL, oldpath);
if (!NT_STATUS_IS_OK(status)) {
return False;
}
*pp_path_out = talloc_asprintf(*conn_out,
"%s/%s",
- lp_pathname(snum),
+ lp_pathname(talloc_tos(), snum),
jucn->volume_name);
if (!*pp_path_out) {
vfs_ChDir(*conn_out, *oldpath);
@@ -1309,8 +1310,8 @@ static int count_dfs_links(TALLOC_CTX *ctx, int snum)
DIR *dirp = NULL;
const char *dname = NULL;
char *talloced = NULL;
- const char *connect_path = lp_pathname(snum);
- const char *msdfs_proxy = lp_msdfs_proxy(snum);
+ const char *connect_path = lp_pathname(talloc_tos(), snum);
+ const char *msdfs_proxy = lp_msdfs_proxy(talloc_tos(), snum);
connection_struct *conn;
NTSTATUS status;
char *cwd;
@@ -1379,9 +1380,9 @@ static int form_junctions(TALLOC_CTX *ctx,
DIR *dirp = NULL;
const char *dname = NULL;
char *talloced = NULL;
- const char *connect_path = lp_pathname(snum);
- char *service_name = lp_servicename(snum);
- const char *msdfs_proxy = lp_msdfs_proxy(snum);
+ const char *connect_path = lp_pathname(talloc_tos(), snum);
+ char *service_name = lp_servicename(talloc_tos(), snum);
+ const char *msdfs_proxy = lp_msdfs_proxy(talloc_tos(), snum);
connection_struct *conn;
struct referral *ref = NULL;
char *cwd;
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index 0cac3a14ec..a0a3f59e08 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -2225,7 +2225,7 @@ static void call_nt_transact_get_user_quota(connection_struct *conn,
/* access check */
if (get_current_uid(conn) != 0) {
DEBUG(1,("get_user_quota: access_denied service [%s] user "
- "[%s]\n", lp_servicename(SNUM(conn)),
+ "[%s]\n", lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name));
reply_nterror(req, NT_STATUS_ACCESS_DENIED);
return;
@@ -2497,7 +2497,7 @@ static void call_nt_transact_set_user_quota(connection_struct *conn,
/* access check */
if (get_current_uid(conn) != 0) {
DEBUG(1,("set_user_quota: access_denied service [%s] user "
- "[%s]\n", lp_servicename(SNUM(conn)),
+ "[%s]\n", lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name));
reply_nterror(req, NT_STATUS_ACCESS_DENIED);
return;
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index a445524f16..15f588885e 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -2742,7 +2742,7 @@ static NTSTATUS mkdir_internal(connection_struct *conn,
if(access_mask & ~(conn->share_access)) {
DEBUG(5,("mkdir_internal: failing share access "
- "%s\n", lp_servicename(SNUM(conn))));
+ "%s\n", lp_servicename(talloc_tos(), SNUM(conn))));
return NT_STATUS_ACCESS_DENIED;
}
diff --git a/source3/smbd/password.c b/source3/smbd/password.c
index c87f15805e..60ab045283 100644
--- a/source3/smbd/password.c
+++ b/source3/smbd/password.c
@@ -127,7 +127,7 @@ int register_homes_share(const char *username)
if (result != -1) {
DEBUG(3, ("Using static (or previously created) service for "
"user '%s'; path = '%s'\n", username,
- lp_pathname(result)));
+ lp_pathname(talloc_tos(), result)));
return result;
}
diff --git a/source3/smbd/perfcount.c b/source3/smbd/perfcount.c
index 1561893758..a7c268a2fe 100644
--- a/source3/smbd/perfcount.c
+++ b/source3/smbd/perfcount.c
@@ -176,7 +176,7 @@ bool smb_perfcount_init(void)
{
char *perfcount_object;
- perfcount_object = lp_perfcount_module();
+ perfcount_object = lp_perfcount_module(talloc_tos());
/* don't init */
if (!perfcount_object || !perfcount_object[0])
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 80b0c1d79b..adb773d749 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -3456,16 +3456,17 @@ void smbd_process(struct tevent_context *ev_ctx,
exit_server("Could not open account policy tdb.\n");
}
- if (*lp_rootdir()) {
- if (chroot(lp_rootdir()) != 0) {
- DEBUG(0,("Failed to change root to %s\n", lp_rootdir()));
+ if (*lp_rootdir(talloc_tos())) {
+ if (chroot(lp_rootdir(talloc_tos())) != 0) {
+ DEBUG(0,("Failed to change root to %s\n",
+ lp_rootdir(talloc_tos())));
exit_server("Failed to chroot()");
}
if (chdir("/") == -1) {
- DEBUG(0,("Failed to chdir to / on chroot to %s\n", lp_rootdir()));
+ DEBUG(0,("Failed to chdir to / on chroot to %s\n", lp_rootdir(talloc_tos())));
exit_server("Failed to chroot()");
}
- DEBUG(0,("Changed root to %s\n", lp_rootdir()));
+ DEBUG(0,("Changed root to %s\n", lp_rootdir(talloc_tos())));
}
if (!srv_init_signing(sconn)) {
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index 080be5cc94..03af4ac403 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -838,7 +838,7 @@ void reply_tcon_and_X(struct smb_request *req)
}
} else {
/* NT sets the fstype of IPC$ to the null string */
- const char *fstype = IS_IPC(conn) ? "" : lp_fstype(SNUM(conn));
+ const char *fstype = IS_IPC(conn) ? "" : lp_fstype(ctx, SNUM(conn));
if (tcon_flags & TCONX_FLAG_EXTENDED_RESPONSE) {
/* Return permissions. */
@@ -876,7 +876,7 @@ void reply_tcon_and_X(struct smb_request *req)
if (lp_msdfs_root(SNUM(conn)) && lp_host_msdfs()) {
DEBUG(2,("Serving %s as a Dfs root\n",
- lp_servicename(SNUM(conn)) ));
+ lp_servicename(ctx, SNUM(conn)) ));
SSVAL(req->outbuf, smb_vwv2,
SMB_SHARE_IN_DFS | SVAL(req->outbuf, smb_vwv2));
}
@@ -973,7 +973,9 @@ void reply_ioctl(struct smb_request *req)
STR_TERMINATE|STR_ASCII);
if (conn) {
srvstr_push((char *)req->outbuf, req->flags2,
- p+18, lp_servicename(SNUM(conn)),
+ p+18,
+ lp_servicename(talloc_tos(),
+ SNUM(conn)),
13, STR_TERMINATE|STR_ASCII);
} else {
memset(p+18, 0, 13);
@@ -1542,7 +1544,7 @@ void reply_search(struct smb_request *req)
if ((dirtype&0x1F) == FILE_ATTRIBUTE_VOLUME) {
char buf[DIR_STRUCT_SIZE];
memcpy(buf,status,21);
- if (!make_dir_struct(ctx,buf,"???????????",volume_label(SNUM(conn)),
+ if (!make_dir_struct(ctx,buf,"???????????",volume_label(ctx, SNUM(conn)),
0,FILE_ATTRIBUTE_VOLUME,0,!allow_long_path_components)) {
reply_nterror(req, NT_STATUS_NO_MEMORY);
goto out;
@@ -1568,8 +1570,8 @@ void reply_search(struct smb_request *req)
/DIR_STRUCT_SIZE));
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",
- directory,lp_dontdescend(SNUM(conn))));
- if (in_list(directory, lp_dontdescend(SNUM(conn)),True)) {
+ directory,lp_dontdescend(ctx, SNUM(conn))));
+ if (in_list(directory, lp_dontdescend(ctx, SNUM(conn)),True)) {
check_descend = True;
}
@@ -5349,7 +5351,7 @@ void reply_printqueue(struct smb_request *req)
TALLOC_CTX *mem_ctx = talloc_tos();
NTSTATUS status;
WERROR werr;
- const char *sharename = lp_servicename(SNUM(conn));
+ const char *sharename = lp_servicename(mem_ctx, SNUM(conn));
struct rpc_pipe_client *cli = NULL;
struct dcerpc_binding_handle *b = NULL;
struct policy_handle handle;
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 94a25109fb..28374fa985 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -1158,7 +1158,7 @@ extern void build_options(bool screen);
gain_root_group_privilege();
fault_setup();
- dump_core_setup("smbd", lp_logfile());
+ dump_core_setup("smbd", lp_logfile(talloc_tos()));
/* we are never interested in SIGPIPE */
BlockSignals(True,SIGPIPE);
diff --git a/source3/smbd/server_reload.c b/source3/smbd/server_reload.c
index bab622d11f..e5d7102744 100644
--- a/source3/smbd/server_reload.c
+++ b/source3/smbd/server_reload.c
@@ -95,7 +95,7 @@ void delete_and_reload_printers(struct tevent_context *ev,
}
sname = lp_const_servicename(snum);
- pname = lp_printername(snum);
+ pname = lp_printername(session_info, snum);
/* check printer, but avoid removing non-autoloaded printers */
if (!pcap_printername_ok(pname) && lp_autoloaded(snum)) {
@@ -103,7 +103,9 @@ void delete_and_reload_printers(struct tevent_context *ev,
if (is_printer_published(session_info, session_info,
msg_ctx,
- NULL, lp_servicename(snum),
+ NULL,
+ lp_servicename(session_info,
+ snum),
NULL, &pinfo2)) {
nt_printer_publish(session_info,
session_info,
@@ -140,7 +142,7 @@ bool reload_services(struct smbd_server_connection *sconn,
bool ret;
if (lp_loaded()) {
- char *fname = lp_configfile();
+ char *fname = lp_configfile(talloc_tos());
if (file_exist(fname) &&
!strcsequal(fname, get_dyn_CONFIGFILE())) {
set_dyn_CONFIGFILE(fname);
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index da5d763ad8..a1d009cb44 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -160,7 +160,7 @@ bool set_conn_connectpath(connection_struct *conn, const char *connectpath)
}
DEBUG(10,("set_conn_connectpath: service %s, connectpath = %s\n",
- lp_servicename(SNUM(conn)), destname ));
+ lp_servicename(talloc_tos(), SNUM(conn)), destname ));
string_set(&conn->connectpath, destname);
SAFE_FREE(destname);
@@ -250,7 +250,7 @@ static NTSTATUS share_sanity_checks(const struct tsocket_address *remote_address
if (dev[0] == '?' || !dev[0]) {
if (lp_print_ok(snum)) {
fstrcpy(dev,"LPT1:");
- } else if (strequal(lp_fstype(snum), "IPC")) {
+ } else if (strequal(lp_fstype(talloc_tos(), snum), "IPC")) {
fstrcpy(dev, "IPC");
} else {
fstrcpy(dev,"A:");
@@ -263,7 +263,7 @@ static NTSTATUS share_sanity_checks(const struct tsocket_address *remote_address
if (!strequal(dev, "LPT1:")) {
return NT_STATUS_BAD_DEVICE_TYPE;
}
- } else if (strequal(lp_fstype(snum), "IPC")) {
+ } else if (strequal(lp_fstype(talloc_tos(), snum), "IPC")) {
if (!strequal(dev, "IPC")) {
return NT_STATUS_BAD_DEVICE_TYPE;
}
@@ -299,7 +299,7 @@ static NTSTATUS find_forced_group(bool force_user,
bool user_must_be_member = False;
gid_t gid;
- groupname = talloc_strdup(talloc_tos(), lp_force_group(snum));
+ groupname = lp_force_group(talloc_tos(), snum);
if (groupname == NULL) {
DEBUG(1, ("talloc_strdup failed\n"));
result = NT_STATUS_NO_MEMORY;
@@ -312,7 +312,7 @@ static NTSTATUS find_forced_group(bool force_user,
}
groupname = talloc_string_sub(talloc_tos(), groupname,
- "%S", lp_servicename(snum));
+ "%S", lp_servicename(talloc_tos(), snum));
if (groupname == NULL) {
DEBUG(1, ("talloc_string_sub failed\n"));
result = NT_STATUS_NO_MEMORY;
@@ -395,7 +395,7 @@ static NTSTATUS create_connection_session_info(struct smbd_server_connection *sc
if (!lp_guest_ok(snum)) {
DEBUG(2, ("guest user (from session setup) "
"not permitted to access this share "
- "(%s)\n", lp_servicename(snum)));
+ "(%s)\n", lp_servicename(talloc_tos(), snum)));
return NT_STATUS_ACCESS_DENIED;
}
} else {
@@ -406,7 +406,7 @@ static NTSTATUS create_connection_session_info(struct smbd_server_connection *sc
"permitted to access this share "
"(%s)\n",
session_info->unix_info->unix_name,
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
return NT_STATUS_ACCESS_DENIED;
}
}
@@ -429,7 +429,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
{
NTSTATUS status;
- if (*lp_force_user(snum)) {
+ if (*lp_force_user(talloc_tos(), snum)) {
/*
* Replace conn->session_info with a completely faked up one
@@ -441,7 +441,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
struct auth_session_info *forced_serverinfo;
bool guest;
- fuser = talloc_string_sub(conn, lp_force_user(snum), "%S",
+ fuser = talloc_string_sub(conn, lp_force_user(talloc_tos(), snum), "%S",
lp_const_servicename(snum));
if (fuser == NULL) {
return NT_STATUS_NO_MEMORY;
@@ -479,7 +479,7 @@ NTSTATUS set_conn_force_user_group(connection_struct *conn, int snum)
* any groupid stored for the connecting user.
*/
- if (*lp_force_group(snum)) {
+ if (*lp_force_group(talloc_tos(), snum)) {
status = find_forced_group(
conn->force_user, snum, conn->session_info->unix_info->unix_name,
@@ -511,7 +511,7 @@ static void create_share_access_mask(connection_struct *conn, int snum)
const struct security_token *token = conn->session_info->security_token;
share_access_check(token,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
MAXIMUM_ALLOWED_ACCESS,
&conn->share_access);
@@ -610,13 +610,13 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
{
char *s = talloc_sub_advanced(talloc_tos(),
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
conn->session_info->unix_info->sanitized_username,
conn->session_info->info->domain_name,
- lp_pathname(snum));
+ lp_pathname(talloc_tos(), snum));
if (!s) {
status = NT_STATUS_NO_MEMORY;
goto err_root_exit;
@@ -628,7 +628,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
goto err_root_exit;
}
DEBUG(3,("Connect path is '%s' for service [%s]\n",s,
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
TALLOC_FREE(s);
}
@@ -647,7 +647,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
DEBUG(0,("make_connection: connection to %s "
"denied due to security "
"descriptor.\n",
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
status = NT_STATUS_ACCESS_DENIED;
goto err_root_exit;
} else {
@@ -658,7 +658,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
if (!smbd_vfs_init(conn)) {
DEBUG(0, ("vfs_init failed for service %s\n",
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
status = NT_STATUS_BAD_NETWORK_NAME;
goto err_root_exit;
}
@@ -673,11 +673,12 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
*/
if ((lp_max_connections(snum) > 0)
- && (count_current_connections(lp_servicename(SNUM(conn)), True) >=
+ && (count_current_connections(lp_servicename(talloc_tos(), SNUM(conn)), True) >=
lp_max_connections(snum))) {
DEBUG(1, ("Max connections (%d) exceeded for %s\n",
- lp_max_connections(snum), lp_servicename(snum)));
+ lp_max_connections(snum),
+ lp_servicename(talloc_tos(), snum)));
status = NT_STATUS_INSUFFICIENT_RESOURCES;
goto err_root_exit;
}
@@ -685,7 +686,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
/*
* Get us an entry in the connections db
*/
- if (!claim_connection(conn, lp_servicename(snum))) {
+ if (!claim_connection(conn, lp_servicename(talloc_tos(), snum))) {
DEBUG(1, ("Could not store connections entry\n"));
status = NT_STATUS_INTERNAL_DB_ERROR;
goto err_root_exit;
@@ -695,7 +696,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
/* Invoke VFS make connection hook - this must be the first
filesystem operation that we do. */
- if (SMB_VFS_CONNECT(conn, lp_servicename(snum),
+ if (SMB_VFS_CONNECT(conn, lp_servicename(talloc_tos(), snum),
conn->session_info->unix_info->unix_name) < 0) {
DEBUG(0,("make_connection: VFS make connection failed!\n"));
status = NT_STATUS_UNSUCCESSFUL;
@@ -736,15 +737,15 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
/* Preexecs are done here as they might make the dir we are to ChDir
* to below */
/* execute any "root preexec = " line */
- if (*lp_rootpreexec(snum)) {
+ if (*lp_rootpreexec(talloc_tos(), snum)) {
char *cmd = talloc_sub_advanced(talloc_tos(),
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
conn->session_info->unix_info->sanitized_username,
conn->session_info->info->domain_name,
- lp_rootpreexec(snum));
+ lp_rootpreexec(talloc_tos(), snum));
DEBUG(5,("cmd=%s\n",cmd));
ret = smbrun(cmd,NULL);
TALLOC_FREE(cmd);
@@ -774,15 +775,15 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
* to below */
/* execute any "preexec = " line */
- if (*lp_preexec(snum)) {
+ if (*lp_preexec(talloc_tos(), snum)) {
char *cmd = talloc_sub_advanced(talloc_tos(),
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
conn->session_info->unix_info->sanitized_username,
conn->session_info->info->domain_name,
- lp_preexec(snum));
+ lp_preexec(talloc_tos(), snum));
ret = smbrun(cmd,NULL);
TALLOC_FREE(cmd);
if (ret != 0 && lp_preexec_close(snum)) {
@@ -818,7 +819,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
if (!canonicalize_connect_path(conn)) {
DEBUG(0, ("canonicalize_connect_path failed "
"for service %s, path %s\n",
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
conn->connectpath));
status = NT_STATUS_BAD_NETWORK_NAME;
goto err_root_exit;
@@ -827,11 +828,14 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
/* Add veto/hide lists */
if (!IS_IPC(conn) && !IS_PRINT(conn)) {
- set_namearray( &conn->veto_list, lp_veto_files(snum));
- set_namearray( &conn->hide_list, lp_hide_files(snum));
- set_namearray( &conn->veto_oplock_list, lp_veto_oplocks(snum));
+ set_namearray( &conn->veto_list,
+ lp_veto_files(talloc_tos(), snum));
+ set_namearray( &conn->hide_list,
+ lp_hide_files(talloc_tos(), snum));
+ set_namearray( &conn->veto_oplock_list,
+ lp_veto_oplocks(talloc_tos(), snum));
set_namearray( &conn->aio_write_behind_list,
- lp_aio_write_behind(snum));
+ lp_aio_write_behind(talloc_tos(), snum));
}
status = create_synthetic_smb_fname(talloc_tos(), conn->connectpath,
NULL, NULL, &smb_fname_cpath);
@@ -850,11 +854,12 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
if (ret == 0 && !S_ISDIR(smb_fname_cpath->st.st_ex_mode)) {
DEBUG(0,("'%s' is not a directory, when connecting to "
"[%s]\n", conn->connectpath,
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
} else {
DEBUG(0,("'%s' does not exist or permission denied "
"when connecting to [%s] Error was %s\n",
- conn->connectpath, lp_servicename(snum),
+ conn->connectpath,
+ lp_servicename(talloc_tos(), snum),
strerror(errno) ));
}
status = NT_STATUS_BAD_NETWORK_NAME;
@@ -882,7 +887,8 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
tsocket_address_string(conn->sconn->remote_address,
talloc_tos()) );
dbgtext( "%s", srv_is_signing_active(sconn) ? "signed " : "");
- dbgtext( "connect to service %s ", lp_servicename(snum) );
+ dbgtext( "connect to service %s ",
+ lp_servicename(talloc_tos(), snum) );
dbgtext( "initially as user %s ",
conn->session_info->unix_info->unix_name );
dbgtext( "(uid=%d, gid=%d) ", (int)effuid, (int)effgid );
@@ -903,7 +909,7 @@ static NTSTATUS make_connection_snum(struct smbd_server_connection *sconn,
SMB_VFS_DISCONNECT(conn);
}
if (claimed_connection) {
- yield_connection(conn, lp_servicename(snum));
+ yield_connection(conn, lp_servicename(talloc_tos(), snum));
}
return status;
}
@@ -921,7 +927,6 @@ static connection_struct *make_connection_smb1(struct smbd_server_connection *sc
NTSTATUS status;
NTTIME now = 0;
struct connection_struct *conn;
- const char *share_name;
status = smb1srv_tcon_create(sconn->conn, now, &tcon);
if (!NT_STATUS_IS_OK(status)) {
@@ -954,8 +959,7 @@ static connection_struct *make_connection_smb1(struct smbd_server_connection *sc
return NULL;
}
- share_name = lp_servicename(SNUM(conn));
- tcon->global->share_name = talloc_strdup(tcon->global, share_name);
+ tcon->global->share_name = lp_servicename(tcon->global, SNUM(conn));
if (tcon->global->share_name == NULL) {
conn_free(conn);
TALLOC_FREE(tcon);
@@ -1075,7 +1079,7 @@ connection_struct *make_connection(struct smbd_server_connection *sconn,
dev, status);
} else if ((vuser->homes_snum != -1)
&& strequal(service_in,
- lp_servicename(vuser->homes_snum))) {
+ lp_servicename(talloc_tos(), vuser->homes_snum))) {
DEBUG(5, ("making a connection to 'homes' service [%s] "
"created at session setup time\n", service_in));
return make_connection_smb1(sconn,
@@ -1116,10 +1120,10 @@ connection_struct *make_connection(struct smbd_server_connection *sconn,
}
/* Handle non-Dfs clients attempting connections to msdfs proxy */
- if (lp_host_msdfs() && (*lp_msdfs_proxy(snum) != '\0')) {
+ if (lp_host_msdfs() && (*lp_msdfs_proxy(talloc_tos(), snum) != '\0')) {
DEBUG(3, ("refusing connection to dfs proxy share '%s' "
"(pointing to %s)\n",
- service, lp_msdfs_proxy(snum)));
+ service, lp_msdfs_proxy(talloc_tos(), snum)));
*status = NT_STATUS_BAD_NETWORK_NAME;
return NULL;
}
@@ -1148,27 +1152,27 @@ void close_cnum(connection_struct *conn, uint64_t vuid)
get_remote_machine_name(),
tsocket_address_string(conn->sconn->remote_address,
talloc_tos()),
- lp_servicename(SNUM(conn))));
+ lp_servicename(talloc_tos(), SNUM(conn))));
/* Call VFS disconnect hook */
SMB_VFS_DISCONNECT(conn);
- yield_connection(conn, lp_servicename(SNUM(conn)));
+ yield_connection(conn, lp_servicename(talloc_tos(), SNUM(conn)));
/* make sure we leave the directory available for unmount */
vfs_ChDir(conn, "/");
/* execute any "postexec = " line */
- if (*lp_postexec(SNUM(conn)) &&
+ if (*lp_postexec(talloc_tos(), SNUM(conn)) &&
change_to_user(conn, vuid)) {
char *cmd = talloc_sub_advanced(talloc_tos(),
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
conn->session_info->unix_info->sanitized_username,
conn->session_info->info->domain_name,
- lp_postexec(SNUM(conn)));
+ lp_postexec(talloc_tos(), SNUM(conn)));
smbrun(cmd,NULL);
TALLOC_FREE(cmd);
change_to_root_user();
@@ -1176,15 +1180,15 @@ void close_cnum(connection_struct *conn, uint64_t vuid)
change_to_root_user();
/* execute any "root postexec = " line */
- if (*lp_rootpostexec(SNUM(conn))) {
+ if (*lp_rootpostexec(talloc_tos(), SNUM(conn))) {
char *cmd = talloc_sub_advanced(talloc_tos(),
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name,
conn->connectpath,
conn->session_info->unix_token->gid,
conn->session_info->unix_info->sanitized_username,
conn->session_info->info->domain_name,
- lp_rootpostexec(SNUM(conn)));
+ lp_rootpostexec(talloc_tos(), SNUM(conn)));
smbrun(cmd,NULL);
TALLOC_FREE(cmd);
}
diff --git a/source3/smbd/share_access.c b/source3/smbd/share_access.c
index 2a4775d2dd..7087a985a9 100644
--- a/source3/smbd/share_access.c
+++ b/source3/smbd/share_access.c
@@ -203,7 +203,7 @@ bool user_ok_token(const char *username, const char *domain,
{
if (lp_invalid_users(snum) != NULL) {
if (token_contains_name_in_list(username, domain,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
token,
lp_invalid_users(snum))) {
DEBUG(10, ("User %s in 'invalid users'\n", username));
@@ -213,7 +213,8 @@ bool user_ok_token(const char *username, const char *domain,
if (lp_valid_users(snum) != NULL) {
if (!token_contains_name_in_list(username, domain,
- lp_servicename(snum), token,
+ lp_servicename(talloc_tos(), snum),
+ token,
lp_valid_users(snum))) {
DEBUG(10, ("User %s not in 'valid users'\n",
username));
@@ -223,14 +224,14 @@ bool user_ok_token(const char *username, const char *domain,
if (lp_onlyuser(snum)) {
const char *list[2];
- list[0] = lp_username(snum);
+ list[0] = lp_username(talloc_tos(), snum);
list[1] = NULL;
if ((list[0] == NULL) || (*list[0] == '\0')) {
DEBUG(0, ("'only user = yes' and no 'username ='\n"));
return False;
}
if (!token_contains_name_in_list(NULL, domain,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
token, list)) {
DEBUG(10, ("%s != 'username'\n", username));
return False;
@@ -238,7 +239,7 @@ bool user_ok_token(const char *username, const char *domain,
}
DEBUG(10, ("user_ok_token: share %s is ok for unix user %s\n",
- lp_servicename(snum), username));
+ lp_servicename(talloc_tos(), snum), username));
return True;
}
@@ -267,7 +268,8 @@ bool is_share_read_only_for_token(const char *username,
if (lp_readlist(snum) != NULL) {
if (token_contains_name_in_list(username, domain,
- lp_servicename(snum), token,
+ lp_servicename(talloc_tos(), snum),
+ token,
lp_readlist(snum))) {
result = True;
}
@@ -275,14 +277,15 @@ bool is_share_read_only_for_token(const char *username,
if (lp_writelist(snum) != NULL) {
if (token_contains_name_in_list(username, domain,
- lp_servicename(snum), token,
+ lp_servicename(talloc_tos(), snum),
+ token,
lp_writelist(snum))) {
result = False;
}
}
DEBUG(10,("is_share_read_only_for_user: share %s is %s for unix user "
- "%s\n", lp_servicename(snum),
+ "%s\n", lp_servicename(talloc_tos(), snum),
result ? "read-only" : "read-write", username));
return result;
diff --git a/source3/smbd/smb2_find.c b/source3/smbd/smb2_find.c
index ef6887d3b7..bb5e934a87 100644
--- a/source3/smbd/smb2_find.c
+++ b/source3/smbd/smb2_find.c
@@ -369,9 +369,9 @@ static struct tevent_req *smbd_smb2_find_send(TALLOC_CTX *mem_ctx,
DEBUG(8,("smbd_smb2_find_send: dirpath=<%s> dontdescend=<%s>, "
"in_output_buffer_length = %u\n",
- fsp->fsp_name->base_name, lp_dontdescend(SNUM(conn)),
+ fsp->fsp_name->base_name, lp_dontdescend(talloc_tos(), SNUM(conn)),
(unsigned int)in_output_buffer_length ));
- if (in_list(fsp->fsp_name->base_name,lp_dontdescend(SNUM(conn)),
+ if (in_list(fsp->fsp_name->base_name,lp_dontdescend(talloc_tos(), SNUM(conn)),
conn->case_sensitive)) {
dont_descend = true;
}
diff --git a/source3/smbd/smb2_tcon.c b/source3/smbd/smb2_tcon.c
index ceb145ff63..4549d3aa84 100644
--- a/source3/smbd/smb2_tcon.c
+++ b/source3/smbd/smb2_tcon.c
@@ -185,7 +185,6 @@ static NTSTATUS smbd_smb2_tree_connect(struct smbd_smb2_request *req,
connection_struct *compat_conn = NULL;
struct user_struct *compat_vuser = req->session->compat;
NTSTATUS status;
- const char *share_name = NULL;
if (strncmp(share, "\\\\", 2) == 0) {
const char *p = strchr(share+2, '\\');
@@ -217,7 +216,7 @@ static NTSTATUS smbd_smb2_tree_connect(struct smbd_smb2_request *req,
snum = compat_vuser->homes_snum;
} else if ((compat_vuser->homes_snum != -1)
&& strequal(service,
- lp_servicename(compat_vuser->homes_snum))) {
+ lp_servicename(talloc_tos(), compat_vuser->homes_snum))) {
snum = compat_vuser->homes_snum;
} else {
snum = find_service(talloc_tos(), service, &service);
@@ -248,8 +247,8 @@ static NTSTATUS smbd_smb2_tree_connect(struct smbd_smb2_request *req,
return status;
}
- share_name = lp_servicename(SNUM(compat_conn));
- tcon->global->share_name = talloc_strdup(tcon->global, share_name);
+ tcon->global->share_name = lp_servicename(tcon->global,
+ SNUM(compat_conn));
if (tcon->global->share_name == NULL) {
conn_free(compat_conn);
TALLOC_FREE(tcon);
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 682b3c4e4f..73feaf8798 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -2495,8 +2495,8 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
a different TRANS2 call. */
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",
- directory,lp_dontdescend(SNUM(conn))));
- if (in_list(directory,lp_dontdescend(SNUM(conn)),conn->case_sensitive))
+ directory,lp_dontdescend(ctx, SNUM(conn))));
+ if (in_list(directory,lp_dontdescend(ctx, SNUM(conn)),conn->case_sensitive))
dont_descend = True;
p = pdata;
@@ -2824,8 +2824,8 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
a different TRANS2 call. */
DEBUG(8,("dirpath=<%s> dontdescend=<%s>\n",
- directory,lp_dontdescend(SNUM(conn))));
- if (in_list(directory,lp_dontdescend(SNUM(conn)),conn->case_sensitive))
+ directory,lp_dontdescend(ctx, SNUM(conn))));
+ if (in_list(directory,lp_dontdescend(ctx, SNUM(conn)),conn->case_sensitive))
dont_descend = True;
p = pdata;
@@ -2943,7 +2943,7 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd
unsigned char *create_volume_objectid(connection_struct *conn, unsigned char objid[16])
{
- E_md4hash(lp_servicename(SNUM(conn)),objid);
+ E_md4hash(lp_servicename(talloc_tos(), SNUM(conn)),objid);
return objid;
}
@@ -2992,9 +2992,9 @@ NTSTATUS smbd_do_qfsinfo(connection_struct *conn,
{
char *pdata, *end_data;
int data_len = 0, len;
- const char *vname = volume_label(SNUM(conn));
+ const char *vname = volume_label(talloc_tos(), SNUM(conn));
int snum = SNUM(conn);
- char *fstype = lp_fstype(SNUM(conn));
+ char *fstype = lp_fstype(talloc_tos(), SNUM(conn));
uint32 additional_flags = 0;
struct smb_filename smb_fname_dot;
SMB_STRUCT_STAT st;
@@ -3073,7 +3073,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_ex_dev, (u
* Add volume serial number - hash of a combination of
* the called hostname and the service name.
*/
- SIVAL(pdata,0,str_checksum(lp_servicename(snum)) ^ (str_checksum(get_local_machine_name())<<16) );
+ SIVAL(pdata,0,str_checksum(lp_servicename(talloc_tos(), snum)) ^ (str_checksum(get_local_machine_name())<<16) );
/*
* Win2k3 and previous mess this up by sending a name length
* one byte short. I believe only older clients (OS/2 Win9x) use
@@ -3139,7 +3139,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_ex_dev, (u
* Add volume serial number - hash of a combination of
* the called hostname and the service name.
*/
- SIVAL(pdata,8,str_checksum(lp_servicename(snum)) ^
+ SIVAL(pdata,8,str_checksum(lp_servicename(talloc_tos(), snum)) ^
(str_checksum(get_local_machine_name())<<16));
/* Max label len is 32 characters. */
@@ -3150,7 +3150,8 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)st.st_ex_dev, (u
data_len = 18+len;
DEBUG(5,("smbd_do_qfsinfo : SMB_QUERY_FS_VOLUME_INFO namelen = %d, vol=%s serv=%s\n",
- (int)strlen(vname),vname, lp_servicename(snum)));
+ (int)strlen(vname),vname,
+ lp_servicename(talloc_tos(), snum)));
break;
case SMB_QUERY_FS_SIZE_INFO:
@@ -3271,20 +3272,20 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
if (get_current_uid(conn) != 0) {
DEBUG(0,("set_user_quota: access_denied "
"service [%s] user [%s]\n",
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name));
return NT_STATUS_ACCESS_DENIED;
}
if (vfs_get_ntquota(&fsp, SMB_USER_FS_QUOTA_TYPE, NULL, &quotas)!=0) {
- DEBUG(0,("vfs_get_ntquota() failed for service [%s]\n",lp_servicename(SNUM(conn))));
+ DEBUG(0,("vfs_get_ntquota() failed for service [%s]\n",lp_servicename(talloc_tos(), SNUM(conn))));
return map_nt_error_from_unix(errno);
}
data_len = 48;
DEBUG(10,("SMB_FS_QUOTA_INFORMATION: for service [%s]\n",
- lp_servicename(SNUM(conn))));
+ lp_servicename(talloc_tos(), SNUM(conn))));
/* Unknown1 24 NULL bytes*/
SBIG_UINT(pdata,0,(uint64_t)0);
@@ -3401,7 +3402,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
return NT_STATUS_INVALID_LEVEL;
#endif /* EOPNOTSUPP */
} else {
- DEBUG(0,("vfs_statvfs() failed for service [%s]\n",lp_servicename(SNUM(conn))));
+ DEBUG(0,("vfs_statvfs() failed for service [%s]\n",lp_servicename(talloc_tos(), SNUM(conn))));
return NT_STATUS_DOS(ERRSRV, ERRerror);
}
break;
@@ -3511,7 +3512,7 @@ cBytesSector=%u, cUnitTotal=%u, cUnitAvail=%d\n", (unsigned int)bsize, (unsigned
* Thursby MAC extension... ONLY on NTFS filesystems
* once we do streams then we don't need this
*/
- if (strequal(lp_fstype(SNUM(conn)),"NTFS")) {
+ if (strequal(lp_fstype(talloc_tos(), SNUM(conn)),"NTFS")) {
data_len = 88;
SIVAL(pdata,84,0x100); /* Don't support mac... */
break;
@@ -3594,7 +3595,8 @@ static void call_trans2setfsinfo(connection_struct *conn,
char *params = *pparams;
uint16 info_level;
- DEBUG(10,("call_trans2setfsinfo: for service [%s]\n",lp_servicename(SNUM(conn))));
+ DEBUG(10,("call_trans2setfsinfo: for service [%s]\n",
+ lp_servicename(talloc_tos(), SNUM(conn))));
/* */
if (total_params < 4) {
@@ -3757,7 +3759,7 @@ static void call_trans2setfsinfo(connection_struct *conn,
/* access check */
if ((get_current_uid(conn) != 0) || !CAN_WRITE(conn)) {
DEBUG(0,("set_user_quota: access_denied service [%s] user [%s]\n",
- lp_servicename(SNUM(conn)),
+ lp_servicename(talloc_tos(), SNUM(conn)),
conn->session_info->unix_info->unix_name));
reply_nterror(req, NT_STATUS_ACCESS_DENIED);
return;
@@ -3801,7 +3803,7 @@ static void call_trans2setfsinfo(connection_struct *conn,
/* now set the quotas */
if (vfs_set_ntquota(fsp, SMB_USER_FS_QUOTA_TYPE, NULL, &quotas)!=0) {
- DEBUG(0,("vfs_set_ntquota() failed for service [%s]\n",lp_servicename(SNUM(conn))));
+ DEBUG(0,("vfs_set_ntquota() failed for service [%s]\n",lp_servicename(talloc_tos(), SNUM(conn))));
reply_nterror(req, map_nt_error_from_unix(errno));
return;
}
@@ -8424,7 +8426,7 @@ static void call_trans2ioctl(connection_struct *conn,
lp_netbios_name(), 15,
STR_ASCII|STR_TERMINATE); /* Our NetBIOS name */
srvstr_push(pdata, req->flags2, pdata+18,
- lp_servicename(SNUM(conn)), 13,
+ lp_servicename(talloc_tos(), SNUM(conn)), 13,
STR_ASCII|STR_TERMINATE); /* Service name */
send_trans2_replies(conn, req, *pparams, 0, *ppdata, 32,
max_data_bytes);
diff --git a/source3/smbd/uid.c b/source3/smbd/uid.c
index 27d7d1a413..eac5d9d97e 100644
--- a/source3/smbd/uid.c
+++ b/source3/smbd/uid.c
@@ -122,7 +122,8 @@ static bool check_user_ok(connection_struct *conn,
if (!readonly_share &&
!share_access_check(session_info->security_token,
- lp_servicename(snum), FILE_WRITE_DATA,
+ lp_servicename(talloc_tos(), snum),
+ FILE_WRITE_DATA,
NULL)) {
/* smb.conf allows r/w, but the security descriptor denies
* write. Fall back to looking at readonly. */
@@ -132,7 +133,7 @@ static bool check_user_ok(connection_struct *conn,
}
if (!share_access_check(session_info->security_token,
- lp_servicename(snum),
+ lp_servicename(talloc_tos(), snum),
readonly_share ?
FILE_READ_DATA : FILE_WRITE_DATA,
NULL)) {
@@ -209,7 +210,7 @@ static bool change_to_user_internal(connection_struct *conn,
"not permitted access to share %s.\n",
session_info->unix_info->sanitized_username,
session_info->unix_info->unix_name,
- lp_servicename(snum)));
+ lp_servicename(talloc_tos(), snum)));
return false;
}
@@ -222,7 +223,7 @@ static bool change_to_user_internal(connection_struct *conn,
* See if we should force group for this service. If so this overrides
* any group set in the force user code.
*/
- if((group_c = *lp_force_group(snum))) {
+ if((group_c = *lp_force_group(talloc_tos(), snum))) {
SMB_ASSERT(conn->force_group_gid != (gid_t)-1);
@@ -299,7 +300,8 @@ bool change_to_user(connection_struct *conn, uint64_t vuid)
if (vuser == NULL) {
/* Invalid vuid sent */
DEBUG(2,("Invalid vuid %llu used on share %s.\n",
- (unsigned long long)vuid, lp_servicename(snum)));
+ (unsigned long long)vuid, lp_servicename(talloc_tos(),
+ snum)));
return false;
}
@@ -307,7 +309,8 @@ bool change_to_user(connection_struct *conn, uint64_t vuid)
if (!conn->force_user && vuser == NULL) {
DEBUG(2,("Invalid vuid used %llu in accessing share %s.\n",
- (unsigned long long)vuid, lp_servicename(snum)));
+ (unsigned long long)vuid,
+ lp_servicename(talloc_tos(), snum)));
return False;
}
diff --git a/source3/torture/cmd_vfs.c b/source3/torture/cmd_vfs.c
index b6cc716a61..0869e0b066 100644
--- a/source3/torture/cmd_vfs.c
+++ b/source3/torture/cmd_vfs.c
@@ -97,7 +97,7 @@ static NTSTATUS cmd_show_data(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int ar
static NTSTATUS cmd_connect(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc, const char **argv)
{
- SMB_VFS_CONNECT(vfs->conn, lp_servicename(SNUM(vfs->conn)), "vfstest");
+ SMB_VFS_CONNECT(vfs->conn, lp_servicename(talloc_tos(), SNUM(vfs->conn)), "vfstest");
return NT_STATUS_OK;
}
diff --git a/source3/utils/net_idmap.c b/source3/utils/net_idmap.c
index 28f9ed938e..f067071de1 100644
--- a/source3/utils/net_idmap.c
+++ b/source3/utils/net_idmap.c
@@ -79,7 +79,8 @@ static const char* net_idmap_dbfile(struct net_context *c)
d_fprintf(stderr, _("Out of memory!\n"));
}
} else if (strequal(lp_idmap_backend(), "tdb2")) {
- dbfile = lp_parm_talloc_string(-1, "tdb", "idmap2.tdb", NULL);
+ dbfile = lp_parm_talloc_string(talloc_tos(),
+ -1, "tdb", "idmap2.tdb", NULL);
if (dbfile == NULL) {
dbfile = talloc_asprintf(talloc_tos(), "%s/idmap2.tdb",
lp_private_dir());
diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
index 7163e663f8..c21d9daec1 100644
--- a/source3/utils/net_sam.c
+++ b/source3/utils/net_sam.c
@@ -1699,7 +1699,8 @@ static int net_sam_provision(struct net_context *c, int argc, const char **argv)
uname = talloc_strdup(tc, "domusers");
wname = talloc_strdup(tc, "Domain Users");
- dn = talloc_asprintf(tc, "cn=%s,%s", "domusers", lp_ldap_group_suffix());
+ dn = talloc_asprintf(tc, "cn=%s,%s", "domusers",
+ lp_ldap_group_suffix(talloc_tos()));
gidstr = talloc_asprintf(tc, "%u", (unsigned int)domusers_gid);
gtype = talloc_asprintf(tc, "%d", SID_NAME_DOM_GRP);
@@ -1775,7 +1776,8 @@ domu_done:
uname = talloc_strdup(tc, "domadmins");
wname = talloc_strdup(tc, "Domain Admins");
- dn = talloc_asprintf(tc, "cn=%s,%s", "domadmins", lp_ldap_group_suffix());
+ dn = talloc_asprintf(tc, "cn=%s,%s", "domadmins",
+ lp_ldap_group_suffix(talloc_tos()));
gidstr = talloc_asprintf(tc, "%u", (unsigned int)domadmins_gid);
gtype = talloc_asprintf(tc, "%d", SID_NAME_DOM_GRP);
@@ -1865,7 +1867,8 @@ doma_done:
}
name = talloc_strdup(tc, "Administrator");
- dn = talloc_asprintf(tc, "uid=Administrator,%s", lp_ldap_user_suffix());
+ dn = talloc_asprintf(tc, "uid=Administrator,%s",
+ lp_ldap_user_suffix(talloc_tos()));
uidstr = talloc_asprintf(tc, "%u", (unsigned int)uid);
gidstr = talloc_asprintf(tc, "%u", (unsigned int)domadmins_gid);
dir = talloc_sub_specified(tc, lp_template_homedir(),
@@ -1989,7 +1992,8 @@ doma_done:
}
}
- dn = talloc_asprintf(tc, "uid=%s,%s", pwd->pw_name, lp_ldap_user_suffix ());
+ dn = talloc_asprintf(tc, "uid=%s,%s", pwd->pw_name,
+ lp_ldap_user_suffix (talloc_tos()));
uidstr = talloc_asprintf(tc, "%u", (unsigned int)pwd->pw_uid);
gidstr = talloc_asprintf(tc, "%u", (unsigned int)pwd->pw_gid);
if (!dn || !uidstr || !gidstr) {
@@ -2074,7 +2078,8 @@ doma_done:
uname = talloc_strdup(tc, "domguests");
wname = talloc_strdup(tc, "Domain Guests");
- dn = talloc_asprintf(tc, "cn=%s,%s", "domguests", lp_ldap_group_suffix());
+ dn = talloc_asprintf(tc, "cn=%s,%s", "domguests",
+ lp_ldap_group_suffix(talloc_tos()));
gidstr = talloc_asprintf(tc, "%u", (unsigned int)pwd->pw_gid);
gtype = talloc_asprintf(tc, "%d", SID_NAME_DOM_GRP);
diff --git a/source3/utils/net_usershare.c b/source3/utils/net_usershare.c
index b11757a611..153b45e7f8 100644
--- a/source3/utils/net_usershare.c
+++ b/source3/utils/net_usershare.c
@@ -135,7 +135,7 @@ int net_usershare_usage(struct net_context *c, int argc, const char **argv)
static char *get_basepath(TALLOC_CTX *ctx)
{
- char *basepath = talloc_strdup(ctx, lp_usershare_path());
+ char *basepath = lp_usershare_path(ctx);
if (!basepath) {
return NULL;
@@ -174,7 +174,7 @@ static int net_usershare_delete(struct net_context *c, int argc, const char **ar
us_path = talloc_asprintf(talloc_tos(),
"%s/%s",
- lp_usershare_path(),
+ lp_usershare_path(talloc_tos()),
sharename);
if (!us_path) {
TALLOC_FREE(sharename);
@@ -1104,13 +1104,13 @@ int net_usershare(struct net_context *c, int argc, const char **argv)
return -1;
}
- dp = opendir(lp_usershare_path());
+ dp = opendir(lp_usershare_path(talloc_tos()));
if (!dp) {
int err = errno;
d_fprintf(stderr,
_("net usershare: cannot open usershare directory %s. "
"Error %s\n"),
- lp_usershare_path(), strerror(err) );
+ lp_usershare_path(talloc_tos()), strerror(err) );
if (err == EACCES) {
d_fprintf(stderr,
_("You do not have permission to create a "
diff --git a/source3/utils/smbpasswd.c b/source3/utils/smbpasswd.c
index 3689983444..43edab24ee 100644
--- a/source3/utils/smbpasswd.c
+++ b/source3/utils/smbpasswd.c
@@ -286,7 +286,7 @@ static bool store_ldap_admin_pw (char* pw)
if (!secrets_init())
return False;
- return secrets_store_ldap_pw(lp_ldap_admin_dn(), pw);
+ return secrets_store_ldap_pw(lp_ldap_admin_dn(talloc_tos()), pw);
}
@@ -301,7 +301,7 @@ static int process_root(int local_flags)
char *old_passwd = NULL;
if (local_flags & LOCAL_SET_LDAP_ADMIN_PW) {
- char *ldap_admin_dn = lp_ldap_admin_dn();
+ char *ldap_admin_dn = lp_ldap_admin_dn(talloc_tos());
if ( ! *ldap_admin_dn ) {
DEBUG(0,("ERROR: 'ldap admin dn' not defined! Please check your smb.conf\n"));
goto done;
diff --git a/source3/utils/testparm.c b/source3/utils/testparm.c
index b75fc61b6e..105f1c5746 100644
--- a/source3/utils/testparm.c
+++ b/source3/utils/testparm.c
@@ -170,8 +170,8 @@ cannot be set in the smb.conf file. nmbd will abort with this setting.\n");
if (!lp_pam_password_change()) {
#endif
- if((lp_passwd_program() == NULL) ||
- (strlen(lp_passwd_program()) == 0))
+ if((lp_passwd_program(talloc_tos()) == NULL) ||
+ (strlen(lp_passwd_program(talloc_tos())) == 0))
{
fprintf( stderr, "ERROR: the 'unix password sync' parameter is set and there is no valid 'passwd program' \
parameter.\n" );
@@ -181,7 +181,7 @@ parameter.\n" );
char *truncated_prog = NULL;
const char *p;
- passwd_prog = lp_passwd_program();
+ passwd_prog = lp_passwd_program(talloc_tos());
p = passwd_prog;
next_token_talloc(talloc_tos(),
&p,
@@ -197,18 +197,18 @@ cannot be executed (error was %s).\n", truncated_prog, strerror(errno) );
}
#endif
- if(lp_passwd_chat() == NULL) {
+ if(lp_passwd_chat(talloc_tos()) == NULL) {
fprintf(stderr, "ERROR: the 'unix password sync' parameter is set and there is no valid 'passwd chat' \
parameter.\n");
ret = 1;
}
- if ((lp_passwd_program() != NULL) &&
- (strlen(lp_passwd_program()) > 0))
+ if ((lp_passwd_program(talloc_tos()) != NULL) &&
+ (strlen(lp_passwd_program(talloc_tos())) > 0))
{
/* check if there's a %u parameter present */
- if(strstr_m(lp_passwd_program(), "%u") == NULL) {
- fprintf(stderr, "ERROR: the 'passwd program' (%s) requires a '%%u' parameter.\n", lp_passwd_program());
+ if(strstr_m(lp_passwd_program(talloc_tos()), "%u") == NULL) {
+ fprintf(stderr, "ERROR: the 'passwd program' (%s) requires a '%%u' parameter.\n", lp_passwd_program(talloc_tos()));
ret = 1;
}
}
@@ -219,9 +219,9 @@ parameter.\n");
*/
if(lp_encrypted_passwords()) {
- if(strstr_m( lp_passwd_chat(), "%o")!=NULL) {
+ if(strstr_m( lp_passwd_chat(talloc_tos()), "%o")!=NULL) {
fprintf(stderr, "ERROR: the 'passwd chat' script [%s] expects to use the old plaintext password \
-via the %%o substitution. With encrypted passwords this is not possible.\n", lp_passwd_chat() );
+via the %%o substitution. With encrypted passwords this is not possible.\n", lp_passwd_chat(talloc_tos()) );
ret = 1;
}
}
@@ -283,7 +283,7 @@ static void do_per_share_checks(int s)
char *hasquery = strchr_m(deny_list[i], '?');
if(hasstar || hasquery) {
fprintf(stderr,"Invalid character %c in hosts deny list (%s) for service %s.\n",
- hasstar ? *hasstar : *hasquery, deny_list[i], lp_servicename(s) );
+ hasstar ? *hasstar : *hasquery, deny_list[i], lp_servicename(talloc_tos(), s) );
}
}
}
@@ -294,7 +294,7 @@ static void do_per_share_checks(int s)
char *hasquery = strchr_m(allow_list[i], '?');
if(hasstar || hasquery) {
fprintf(stderr,"Invalid character %c in hosts allow list (%s) for service %s.\n",
- hasstar ? *hasstar : *hasquery, allow_list[i], lp_servicename(s) );
+ hasstar ? *hasstar : *hasquery, allow_list[i], lp_servicename(talloc_tos(), s) );
}
}
}
@@ -302,7 +302,7 @@ static void do_per_share_checks(int s)
if(lp_level2_oplocks(s) && !lp_oplocks(s)) {
fprintf(stderr,"Invalid combination of parameters for service %s. \
Level II oplocks can only be set if oplocks are also set.\n",
- lp_servicename(s) );
+ lp_servicename(talloc_tos(), s) );
}
if (!lp_store_dos_attributes(s) && lp_map_hidden(s)
@@ -310,34 +310,34 @@ static void do_per_share_checks(int s)
{
fprintf(stderr,"Invalid combination of parameters for service "
"%s. Map hidden can only work if create mask includes "
- "octal 01 (S_IXOTH).\n", lp_servicename(s));
+ "octal 01 (S_IXOTH).\n", lp_servicename(talloc_tos(), s));
}
if (!lp_store_dos_attributes(s) && lp_map_hidden(s)
&& (lp_force_create_mode(s) & S_IXOTH))
{
fprintf(stderr,"Invalid combination of parameters for service "
"%s. Map hidden can only work if force create mode "
- "excludes octal 01 (S_IXOTH).\n", lp_servicename(s));
+ "excludes octal 01 (S_IXOTH).\n", lp_servicename(talloc_tos(), s));
}
if (!lp_store_dos_attributes(s) && lp_map_system(s)
&& !(lp_create_mask(s) & S_IXGRP))
{
fprintf(stderr,"Invalid combination of parameters for service "
"%s. Map system can only work if create mask includes "
- "octal 010 (S_IXGRP).\n", lp_servicename(s));
+ "octal 010 (S_IXGRP).\n", lp_servicename(talloc_tos(), s));
}
if (!lp_store_dos_attributes(s) && lp_map_system(s)
&& (lp_force_create_mode(s) & S_IXGRP))
{
fprintf(stderr,"Invalid combination of parameters for service "
"%s. Map system can only work if force create mode "
- "excludes octal 010 (S_IXGRP).\n", lp_servicename(s));
+ "excludes octal 010 (S_IXGRP).\n", lp_servicename(talloc_tos(), s));
}
#ifdef HAVE_CUPS
- if (lp_printing(s) == PRINT_CUPS && *(lp_printcommand(s)) != '\0') {
+ if (lp_printing(s) == PRINT_CUPS && *(lp_printcommand(talloc_tos(), s)) != '\0') {
fprintf(stderr,"Warning: Service %s defines a print command, but \
rameter is ignored when using CUPS libraries.\n",
- lp_servicename(s) );
+ lp_servicename(talloc_tos(), s) );
}
#endif
}
@@ -424,7 +424,7 @@ rameter is ignored when using CUPS libraries.\n",
for (s=0;s<1000;s++) {
if (VALID_SNUM(s))
- if (strlen(lp_servicename(s)) > 12) {
+ if (strlen(lp_servicename(talloc_tos(), s)) > 12) {
fprintf(stderr, "WARNING: You have some share names that are longer than 12 characters.\n" );
fprintf(stderr, "These may not be accessible to some older clients.\n" );
fprintf(stderr, "(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)\n" );
@@ -489,10 +489,10 @@ rameter is ignored when using CUPS libraries.\n",
if (allow_access(lp_hostsdeny(-1), lp_hostsallow(-1), cname, caddr)
&& allow_access(lp_hostsdeny(s), lp_hostsallow(s), cname, caddr)) {
fprintf(stderr,"Allow connection from %s (%s) to %s\n",
- cname,caddr,lp_servicename(s));
+ cname,caddr,lp_servicename(talloc_tos(), s));
} else {
fprintf(stderr,"Deny connection from %s (%s) to %s\n",
- cname,caddr,lp_servicename(s));
+ cname,caddr,lp_servicename(talloc_tos(), s));
}
}
}
diff --git a/source3/web/swat.c b/source3/web/swat.c
index 1e676a5aec..90e4af9958 100644
--- a/source3/web/swat.c
+++ b/source3/web/swat.c
@@ -627,7 +627,7 @@ static void commit_parameter(int snum, struct parm_struct *parm, const char *v)
variable globally. We need to change the parameter in
all shares where it is currently set to the default */
for (i=0;i<lp_numservices();i++) {
- s = lp_servicename(i);
+ s = lp_servicename(talloc_tos(), i);
if (s && (*s) && lp_is_default(i, parm)) {
lp_do_parameter(i, parm->label, v);
}
@@ -1112,7 +1112,7 @@ output_page:
if (snum < 0)
printf("<option value=\" \"> \n");
for (i=0;i<lp_numservices();i++) {
- s = lp_servicename(i);
+ s = lp_servicename(talloc_tos(), i);
if (s && (*s) && strcmp(s,"IPC$") && !lp_print_ok(i)) {
push_utf8_talloc(talloc_tos(), &utf8_s, s, &converted_size);
printf("<option %s value=\"%s\">%s\n",
@@ -1469,7 +1469,7 @@ output_page:
if (snum < 0 || !lp_print_ok(snum))
printf("<option value=\" \"> \n");
for (i=0;i<lp_numservices();i++) {
- s = lp_servicename(i);
+ s = lp_servicename(talloc_tos(), i);
if (s && (*s) && strcmp(s,"IPC$") && lp_print_ok(i)) {
if (i >= iNumNonAutoPrintServices)
printf("<option %s value=\"%s\">[*]%s\n",
diff --git a/source3/winbindd/idmap_ldap.c b/source3/winbindd/idmap_ldap.c
index 4f1dc8c7f4..aeeb2e87d0 100644
--- a/source3/winbindd/idmap_ldap.c
+++ b/source3/winbindd/idmap_ldap.c
@@ -471,7 +471,7 @@ static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
tmp = lp_parm_const_string(-1, config_option, "ldap_base_dn", NULL);
if ( ! tmp || ! *tmp) {
- tmp = lp_ldap_idmap_suffix();
+ tmp = lp_ldap_idmap_suffix(talloc_tos());
if ( ! tmp) {
DEBUG(1, ("ERROR: missing idmap ldap suffix\n"));
ret = NT_STATUS_UNSUCCESSFUL;
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 1b6f4251b9..fe6e34b4b9 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -65,7 +65,7 @@ static bool reload_services_file(const char *lfile)
bool ret;
if (lp_loaded()) {
- char *fname = lp_configfile();
+ char *fname = lp_configfile(talloc_tos());
if (file_exist(fname) && !strcsequal(fname,get_dyn_CONFIGFILE())) {
set_dyn_CONFIGFILE(fname);
@@ -1297,7 +1297,7 @@ int main(int argc, char **argv, char **envp)
CatchSignal(SIGUSR2, SIG_IGN);
fault_setup();
- dump_core_setup("winbindd", lp_logfile());
+ dump_core_setup("winbindd", lp_logfile(talloc_tos()));
load_case_tables();
@@ -1357,7 +1357,7 @@ int main(int argc, char **argv, char **envp)
* is often not related to the path where winbindd is actually run
* in production.
*/
- dump_core_setup("winbindd", lp_logfile());
+ dump_core_setup("winbindd", lp_logfile(talloc_tos()));
if (is_daemon && interactive) {
d_fprintf(stderr,"\nERROR: "
"Option -i|--interactive is not allowed together with -D|--daemon\n\n");
@@ -1401,7 +1401,7 @@ int main(int argc, char **argv, char **envp)
* as the log file might have been set in the configuration and cores's
* path is by default basename(lp_logfile()).
*/
- dump_core_setup("winbindd", lp_logfile());
+ dump_core_setup("winbindd", lp_logfile(talloc_tos()));
/* Initialise messaging system */
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index 4eef550b4b..0e9bea123e 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -455,10 +455,10 @@ void setup_child(struct winbindd_domain *domain, struct winbindd_child *child,
if (logprefix && logname) {
char *logbase = NULL;
- if (*lp_logfile()) {
+ if (*lp_logfile(talloc_tos())) {
char *end = NULL;
- if (asprintf(&logbase, "%s", lp_logfile()) < 0) {
+ if (asprintf(&logbase, "%s", lp_logfile(talloc_tos())) < 0) {
smb_panic("Internal error: asprintf failed");
}