From 50b3458261fbcb304219b753a8690ed8ed9fc2cc Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 15 Jan 2011 16:20:37 +0100 Subject: s3: Convert cli_set_secdesc to cli_trans --- source3/libsmb/clisecdesc.c | 53 ++++++++++++++++--------------------------- source3/libsmb/libsmb_xattr.c | 6 +++-- 2 files changed, 23 insertions(+), 36 deletions(-) (limited to 'source3/libsmb') diff --git a/source3/libsmb/clisecdesc.c b/source3/libsmb/clisecdesc.c index 33932a654a..5543ce5033 100644 --- a/source3/libsmb/clisecdesc.c +++ b/source3/libsmb/clisecdesc.c @@ -70,14 +70,11 @@ struct security_descriptor *cli_query_secdesc(struct cli_state *cli, uint16_t fn /**************************************************************************** set the security descriptor for a open file ****************************************************************************/ -bool cli_set_secdesc(struct cli_state *cli, uint16_t fnum, struct security_descriptor *sd) +NTSTATUS cli_set_secdesc(struct cli_state *cli, uint16_t fnum, + struct security_descriptor *sd) { - char param[8]; - char *rparam=NULL, *rdata=NULL; - unsigned int rparam_count=0, rdata_count=0; + uint8_t param[8]; uint32 sec_info = 0; - TALLOC_CTX *frame = talloc_stackframe(); - bool ret = False; uint8 *data; size_t len; NTSTATUS status; @@ -86,7 +83,7 @@ bool cli_set_secdesc(struct cli_state *cli, uint16_t fnum, struct security_descr if (!NT_STATUS_IS_OK(status)) { DEBUG(10, ("marshall_sec_desc failed: %s\n", nt_errstr(status))); - goto cleanup; + return status; } SIVAL(param, 0, fnum); @@ -99,32 +96,20 @@ bool cli_set_secdesc(struct cli_state *cli, uint16_t fnum, struct security_descr sec_info |= SECINFO_GROUP; SSVAL(param, 4, sec_info); - if (!cli_send_nt_trans(cli, - NT_TRANSACT_SET_SECURITY_DESC, - 0, - NULL, 0, 0, - param, 8, 0, - (char *)data, len, 0)) { - DEBUG(1,("Failed to send NT_TRANSACT_SET_SECURITY_DESC\n")); - goto cleanup; - } - - - if (!cli_receive_nt_trans(cli, - &rparam, &rparam_count, - &rdata, &rdata_count)) { - DEBUG(1,("NT_TRANSACT_SET_SECURITY_DESC failed\n")); - goto cleanup; + status = cli_trans(talloc_tos(), cli, SMBnttrans, + NULL, -1, /* name, fid */ + NT_TRANSACT_SET_SECURITY_DESC, 0, + NULL, 0, 0, /* setup */ + param, 8, 0, /* param */ + data, len, 0, /* data */ + NULL, /* recv_flags2 */ + NULL, 0, NULL, /* rsetup */ + NULL, 0, NULL, /* rparam */ + NULL, 0, NULL); /* rdata */ + TALLOC_FREE(data); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(1, ("Failed to send NT_TRANSACT_SET_SECURITY_DESC: %s\n", + nt_errstr(status))); } - - ret = True; - - cleanup: - - SAFE_FREE(rparam); - SAFE_FREE(rdata); - - TALLOC_FREE(frame); - - return ret; + return status; } diff --git a/source3/libsmb/libsmb_xattr.c b/source3/libsmb/libsmb_xattr.c index 7086808f3c..155a6b9741 100644 --- a/source3/libsmb/libsmb_xattr.c +++ b/source3/libsmb/libsmb_xattr.c @@ -1513,6 +1513,7 @@ cacl_set(SMBCCTX *context, bool numeric = True; char *targetpath = NULL; struct cli_state *targetcli = NULL; + NTSTATUS status; /* the_acl will be null for REMOVE_ALL operations */ if (the_acl) { @@ -1666,9 +1667,10 @@ cacl_set(SMBCCTX *context, return -1; } - if (!cli_set_secdesc(targetcli, fnum, sd)) { + status = cli_set_secdesc(targetcli, fnum, sd); + if (!NT_STATUS_IS_OK(status)) { DEBUG(5, ("ERROR: secdesc set failed: %s\n", - cli_errstr(targetcli))); + nt_errstr(status))); ret = -1; } -- cgit