diff options
-rw-r--r-- | source3/lib/sharesec.c | 14 | ||||
-rw-r--r-- | source3/param/loadparm.c | 4 | ||||
-rw-r--r-- | source3/rpc_server/srv_srvsvc_nt.c | 2 |
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); |