Changeset 745 for trunk/server/source3/lib/netapi/samr.c
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source3/lib/netapi/samr.c
r414 r745 21 21 #include "lib/netapi/netapi.h" 22 22 #include "lib/netapi/netapi_private.h" 23 #include "../librpc/gen_ndr/cli_samr.h" 23 #include "rpc_client/rpc_client.h" 24 #include "../librpc/gen_ndr/ndr_samr_c.h" 25 #include "rpc_client/cli_samr.h" 26 #include "rpc_client/init_lsa.h" 27 #include "../libcli/security/security.h" 24 28 25 29 /**************************************************************** … … 34 38 struct dom_sid2 **domain_sid) 35 39 { 36 NTSTATUS status ;40 NTSTATUS status, result; 37 41 WERROR werr; 38 42 struct libnetapi_private_ctx *priv; … … 44 48 bool domain_found = true; 45 49 int i; 50 struct dcerpc_binding_handle *b = pipe_cli->binding_handle; 46 51 47 52 priv = talloc_get_type_abort(mem_ctx->private_data, … … 78 83 79 84 if (!is_valid_policy_hnd(connect_handle)) { 80 status = rpccli_try_samr_connects(pipe_cli, mem_ctx, 85 status = dcerpc_try_samr_connects(pipe_cli->binding_handle, mem_ctx, 86 pipe_cli->srv_name_slash, 81 87 connect_mask, 82 connect_handle); 88 connect_handle, 89 &result); 83 90 if (!NT_STATUS_IS_OK(status)) { 84 91 werr = ntstatus_to_werror(status); 85 92 goto done; 86 93 } 87 } 88 89 status = rpccli_samr_EnumDomains(pipe_cli, mem_ctx, 94 if (!NT_STATUS_IS_OK(result)) { 95 werr = ntstatus_to_werror(result); 96 goto done; 97 } 98 } 99 100 status = dcerpc_samr_EnumDomains(b, mem_ctx, 90 101 connect_handle, 91 102 &resume_handle, 92 103 &sam, 93 104 0xffffffff, 94 &num_entries); 105 &num_entries, 106 &result); 95 107 if (!NT_STATUS_IS_OK(status)) { 96 108 werr = ntstatus_to_werror(status); 97 109 goto done; 98 110 } 111 if (!NT_STATUS_IS_OK(result)) { 112 werr = ntstatus_to_werror(result); 113 goto done; 114 } 99 115 100 116 for (i=0; i<num_entries; i++) { … … 117 133 init_lsa_String(&lsa_domain_name, domain_name); 118 134 119 status = rpccli_samr_LookupDomain(pipe_cli, mem_ctx,135 status = dcerpc_samr_LookupDomain(b, mem_ctx, 120 136 connect_handle, 121 137 &lsa_domain_name, 122 domain_sid); 138 domain_sid, 139 &result); 123 140 if (!NT_STATUS_IS_OK(status)) { 124 141 werr = ntstatus_to_werror(status); 125 142 goto done; 126 143 } 127 128 status = rpccli_samr_OpenDomain(pipe_cli, mem_ctx, 144 if (!NT_STATUS_IS_OK(result)) { 145 werr = ntstatus_to_werror(result); 146 goto done; 147 } 148 149 status = dcerpc_samr_OpenDomain(b, mem_ctx, 129 150 connect_handle, 130 151 domain_mask, 131 152 *domain_sid, 132 domain_handle); 153 domain_handle, 154 &result); 133 155 if (!NT_STATUS_IS_OK(status)) { 134 156 werr = ntstatus_to_werror(status); 157 goto done; 158 } 159 if (!NT_STATUS_IS_OK(result)) { 160 werr = ntstatus_to_werror(result); 135 161 goto done; 136 162 } … … 163 189 struct policy_handle *builtin_handle) 164 190 { 165 NTSTATUS status ;191 NTSTATUS status, result; 166 192 WERROR werr; 167 193 struct libnetapi_private_ctx *priv; 194 struct dcerpc_binding_handle *b = pipe_cli->binding_handle; 168 195 169 196 priv = talloc_get_type_abort(mem_ctx->private_data, … … 196 223 197 224 if (!is_valid_policy_hnd(connect_handle)) { 198 status = rpccli_try_samr_connects(pipe_cli, mem_ctx, 225 status = dcerpc_try_samr_connects(pipe_cli->binding_handle, mem_ctx, 226 pipe_cli->srv_name_slash, 199 227 connect_mask, 200 connect_handle); 228 connect_handle, 229 &result); 201 230 if (!NT_STATUS_IS_OK(status)) { 202 231 werr = ntstatus_to_werror(status); 203 232 goto done; 204 233 } 205 } 206 207 status = rpccli_samr_OpenDomain(pipe_cli, mem_ctx, 234 if (!NT_STATUS_IS_OK(result)) { 235 werr = ntstatus_to_werror(result); 236 goto done; 237 } 238 } 239 240 status = dcerpc_samr_OpenDomain(b, mem_ctx, 208 241 connect_handle, 209 242 builtin_mask, 210 CONST_DISCARD(DOM_SID *, &global_sid_Builtin), 211 builtin_handle); 243 CONST_DISCARD(struct dom_sid *, &global_sid_Builtin), 244 builtin_handle, 245 &result); 212 246 if (!NT_STATUS_IS_OK(status)) { 213 247 werr = ntstatus_to_werror(status); 214 248 goto done; 215 249 } 250 if (!NT_STATUS_IS_OK(result)) { 251 werr = ntstatus_to_werror(result); 252 goto done; 253 } 216 254 217 255 priv->samr.cli = pipe_cli; … … 236 274 { 237 275 struct libnetapi_private_ctx *priv; 276 struct dcerpc_binding_handle *b; 277 NTSTATUS result; 238 278 239 279 if (!is_valid_policy_hnd(handle)) { … … 244 284 struct libnetapi_private_ctx); 245 285 246 if (!policy_hnd_equal(handle, &priv->samr.domain_handle)) { 247 return; 248 } 249 250 rpccli_samr_Close(priv->samr.cli, ctx, handle); 286 if (!policy_handle_equal(handle, &priv->samr.domain_handle)) { 287 return; 288 } 289 290 b = priv->samr.cli->binding_handle; 291 292 dcerpc_samr_Close(b, ctx, handle, &result); 251 293 252 294 ZERO_STRUCT(priv->samr.domain_handle); … … 260 302 { 261 303 struct libnetapi_private_ctx *priv; 304 struct dcerpc_binding_handle *b; 305 NTSTATUS result; 262 306 263 307 if (!is_valid_policy_hnd(handle)) { … … 268 312 struct libnetapi_private_ctx); 269 313 270 if (!policy_hnd_equal(handle, &priv->samr.builtin_handle)) { 271 return; 272 } 273 274 rpccli_samr_Close(priv->samr.cli, ctx, handle); 314 if (!policy_handle_equal(handle, &priv->samr.builtin_handle)) { 315 return; 316 } 317 318 b = priv->samr.cli->binding_handle; 319 320 dcerpc_samr_Close(b, ctx, handle, &result); 275 321 276 322 ZERO_STRUCT(priv->samr.builtin_handle); … … 284 330 { 285 331 struct libnetapi_private_ctx *priv; 332 struct dcerpc_binding_handle *b; 333 NTSTATUS result; 286 334 287 335 if (!is_valid_policy_hnd(handle)) { … … 292 340 struct libnetapi_private_ctx); 293 341 294 if (!policy_hnd_equal(handle, &priv->samr.connect_handle)) { 295 return; 296 } 297 298 rpccli_samr_Close(priv->samr.cli, ctx, handle); 342 if (!policy_handle_equal(handle, &priv->samr.connect_handle)) { 343 return; 344 } 345 346 b = priv->samr.cli->binding_handle; 347 348 dcerpc_samr_Close(b, ctx, handle, &result); 299 349 300 350 ZERO_STRUCT(priv->samr.connect_handle);
Note:
See TracChangeset
for help on using the changeset viewer.