summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/sharesec.c14
-rw-r--r--source3/param/loadparm.c4
-rw-r--r--source3/rpc_server/srv_srvsvc_nt.c2
3 files changed, 11 insertions, 9 deletions
diff --git a/source3/lib/sharesec.c b/source3/lib/sharesec.c
index 258b121217..58e28e797d 100644
--- a/source3/lib/sharesec.c
+++ b/source3/lib/sharesec.c
@@ -197,18 +197,20 @@ BOOL set_share_security(const char *share_name, SEC_DESC *psd)
Delete a security descriptor.
********************************************************************/
-BOOL delete_share_security(const struct share_params *params)
+BOOL delete_share_security(const char *servicename)
{
TDB_DATA kbuf;
- fstring key;
+ char *key;
- slprintf(key, sizeof(key)-1, "SECDESC/%s",
- lp_servicename(params->service));
+ if (!(key = talloc_asprintf(talloc_tos(), "SECDESC/%s",
+ servicename))) {
+ return False;
+ }
kbuf = string_term_tdb_data(key);
if (tdb_trans_delete(share_tdb, kbuf) != 0) {
- DEBUG(0,("delete_share_security: Failed to delete entry for share %s\n",
- lp_servicename(params->service) ));
+ DEBUG(0, ("delete_share_security: Failed to delete entry for "
+ "share %s\n", servicename));
return False;
}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index d7e15226e9..84e3658e84 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -5517,7 +5517,7 @@ int load_usershare_shares(void)
/* Remove from the share ACL db. */
DEBUG(10,("load_usershare_shares: Removing deleted usershare %s\n",
lp_servicename(iService) ));
- delete_share_security(snum2params_static(iService));
+ delete_share_security(lp_servicename(iService));
free_service_byindex(iService);
}
}
@@ -5749,7 +5749,7 @@ int lp_servicenumber(const char *pszServiceName)
if (!usershare_exists(iService, &last_mod)) {
/* Remove the share security tdb entry for it. */
- delete_share_security(snum2params_static(iService));
+ delete_share_security(lp_servicename(iService));
/* Remove it from the array. */
free_service_byindex(iService);
/* Doesn't exist anymore. */
diff --git a/source3/rpc_server/srv_srvsvc_nt.c b/source3/rpc_server/srv_srvsvc_nt.c
index 321ff83156..2af4c79002 100644
--- a/source3/rpc_server/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srv_srvsvc_nt.c
@@ -1994,7 +1994,7 @@ WERROR _srvsvc_NetShareDel(pipes_struct *p, struct srvsvc_NetShareDel *r)
}
/* Delete the SD in the database. */
- delete_share_security(params);
+ delete_share_security(lp_servicename(params->service));
lp_killservice(params->service);