Changeset 740 for vendor/current/source3/libsmb/clisecdesc.c
- Timestamp:
- Nov 14, 2012, 12:59:34 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vendor/current/source3/libsmb/clisecdesc.c
r414 r740 3 3 client security descriptor functions 4 4 Copyright (C) Andrew Tridgell 2000 5 5 6 6 This program is free software; you can redistribute it and/or modify 7 7 it under the terms of the GNU General Public License as published by 8 8 the Free Software Foundation; either version 3 of the License, or 9 9 (at your option) any later version. 10 10 11 11 This program is distributed in the hope that it will be useful, 12 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 14 GNU General Public License for more details. 15 15 16 16 You should have received a copy of the GNU General Public License 17 17 along with this program. If not, see <http://www.gnu.org/licenses/>. … … 19 19 20 20 #include "includes.h" 21 #include "libsmb/libsmb.h" 21 22 22 23 /**************************************************************************** 23 24 query the security descriptor for a open file 24 25 ****************************************************************************/ 25 SEC_DESC *cli_query_secdesc(struct cli_state *cli, uint16_t fnum, 26 struct security_descriptor *cli_query_secdesc(struct cli_state *cli, uint16_t fnum, 26 27 TALLOC_CTX *mem_ctx) 27 28 { 28 29 uint8_t param[8]; 29 uint8_t *r param=NULL, *rdata=NULL;30 u nsigned int rparam_count=0,rdata_count=0;31 SEC_DESC*psd = NULL;30 uint8_t *rdata=NULL; 31 uint32_t rdata_count=0; 32 struct security_descriptor *psd = NULL; 32 33 NTSTATUS status; 33 34 … … 41 42 param, 8, 4, /* param, length, max */ 42 43 NULL, 0, 0x10000, /* data, length, max */ 43 NULL, NULL, /* rsetup, length */ 44 &rparam, &rparam_count, 45 &rdata, &rdata_count); 44 NULL, /* recv_flags2 */ 45 NULL, 0, NULL, /* rsetup, length */ 46 NULL, 0, NULL, 47 &rdata, 0, &rdata_count); 46 48 47 49 if (!NT_STATUS_IS_OK(status)) { … … 62 64 cleanup: 63 65 64 TALLOC_FREE(rparam);65 66 TALLOC_FREE(rdata); 66 67 … … 71 72 set the security descriptor for a open file 72 73 ****************************************************************************/ 73 bool cli_set_secdesc(struct cli_state *cli, uint16_t fnum, SEC_DESC *sd) 74 NTSTATUS cli_set_secdesc(struct cli_state *cli, uint16_t fnum, 75 struct security_descriptor *sd) 74 76 { 75 char param[8]; 76 char *rparam=NULL, *rdata=NULL; 77 unsigned int rparam_count=0, rdata_count=0; 77 uint8_t param[8]; 78 78 uint32 sec_info = 0; 79 TALLOC_CTX *frame = talloc_stackframe();80 bool ret = False;81 79 uint8 *data; 82 80 size_t len; … … 87 85 DEBUG(10, ("marshall_sec_desc failed: %s\n", 88 86 nt_errstr(status))); 89 goto cleanup;87 return status; 90 88 } 91 89 … … 93 91 94 92 if (sd->dacl) 95 sec_info |= DACL_SECURITY_INFORMATION;93 sec_info |= SECINFO_DACL; 96 94 if (sd->owner_sid) 97 sec_info |= OWNER_SECURITY_INFORMATION;95 sec_info |= SECINFO_OWNER; 98 96 if (sd->group_sid) 99 sec_info |= GROUP_SECURITY_INFORMATION;97 sec_info |= SECINFO_GROUP; 100 98 SSVAL(param, 4, sec_info); 101 99 102 if (!cli_send_nt_trans(cli, 103 NT_TRANSACT_SET_SECURITY_DESC, 104 0, 105 NULL, 0, 0, 106 param, 8, 0, 107 (char *)data, len, 0)) { 108 DEBUG(1,("Failed to send NT_TRANSACT_SET_SECURITY_DESC\n")); 109 goto cleanup; 100 status = cli_trans(talloc_tos(), cli, SMBnttrans, 101 NULL, -1, /* name, fid */ 102 NT_TRANSACT_SET_SECURITY_DESC, 0, 103 NULL, 0, 0, /* setup */ 104 param, 8, 0, /* param */ 105 data, len, 0, /* data */ 106 NULL, /* recv_flags2 */ 107 NULL, 0, NULL, /* rsetup */ 108 NULL, 0, NULL, /* rparam */ 109 NULL, 0, NULL); /* rdata */ 110 TALLOC_FREE(data); 111 if (!NT_STATUS_IS_OK(status)) { 112 DEBUG(1, ("Failed to send NT_TRANSACT_SET_SECURITY_DESC: %s\n", 113 nt_errstr(status))); 110 114 } 111 112 113 if (!cli_receive_nt_trans(cli, 114 &rparam, &rparam_count, 115 &rdata, &rdata_count)) { 116 DEBUG(1,("NT_TRANSACT_SET_SECURITY_DESC failed\n")); 117 goto cleanup; 118 } 119 120 ret = True; 121 122 cleanup: 123 124 SAFE_FREE(rparam); 125 SAFE_FREE(rdata); 126 127 TALLOC_FREE(frame); 128 129 return ret; 115 return status; 130 116 }
Note:
See TracChangeset
for help on using the changeset viewer.