summaryrefslogtreecommitdiffstats
path: root/source/rpcclient/cmd_samr.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/rpcclient/cmd_samr.c')
-rw-r--r--source/rpcclient/cmd_samr.c82
1 files changed, 29 insertions, 53 deletions
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 53019dc1b23..d3f89540502 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -568,39 +568,25 @@ static NTSTATUS cmd_samr_query_useraliases(struct cli_state *cli,
{
POLICY_HND connect_pol, domain_pol;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- DOM_SID *sids;
- int num_sids;
- uint32 num_aliases, *alias_rids;
+ uint32 user_rid, num_aliases, *alias_rids;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
int i;
fstring server;
- DOM_SID2 *sid2;
+ DOM_SID tmp_sid;
+ DOM_SID2 sid;
+ DOM_SID global_sid_Builtin;
- if (argc < 3) {
- printf("Usage: %s builtin|domain sid1 sid2 ...\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
+ string_to_sid(&global_sid_Builtin, "S-1-5-32");
- sids = NULL;
- num_sids = 0;
-
- for (i=2; i<argc; i++) {
- DOM_SID tmp_sid;
- if (!string_to_sid(&tmp_sid, argv[i])) {
- printf("%s is not a legal SID\n", argv[i]);
- return NT_STATUS_INVALID_PARAMETER;
- }
- add_sid_to_array(mem_ctx, &tmp_sid, &sids, &num_sids);
+ if ((argc < 3) || (argc > 4)) {
+ printf("Usage: %s builtin|domain rid [access mask]\n", argv[0]);
+ return NT_STATUS_OK;
}
- sid2 = TALLOC_ARRAY(mem_ctx, DOM_SID2, num_sids);
- if (sid2 == NULL)
- return NT_STATUS_NO_MEMORY;
-
- for (i=0; i<num_sids; i++) {
- sid_copy(&sid2[i].sid, &sids[i]);
- sid2[i].num_auths = sid2[i].sid.num_auths;
- }
+ sscanf(argv[2], "%i", &user_rid);
+
+ if (argc > 3)
+ sscanf(argv[3], "%x", &access_mask);
slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->desthost);
strupper_m(server);
@@ -618,19 +604,18 @@ static NTSTATUS cmd_samr_query_useraliases(struct cli_state *cli,
else if (StrCaseCmp(argv[1], "builtin")==0)
result = cli_samr_open_domain(cli, mem_ctx, &connect_pol,
access_mask,
- &global_sid_Builtin,
- &domain_pol);
- else {
- printf("Usage: %s builtin|domain sid1 sid2 ...\n", argv[0]);
- return NT_STATUS_INVALID_PARAMETER;
- }
+ &global_sid_Builtin, &domain_pol);
+ else
+ return NT_STATUS_OK;
if (!NT_STATUS_IS_OK(result))
goto done;
- result = cli_samr_query_useraliases(cli, mem_ctx, &domain_pol,
- num_sids, sid2,
- &num_aliases, &alias_rids);
+ sid_copy(&tmp_sid, &domain_sid);
+ sid_append_rid(&tmp_sid, user_rid);
+ init_dom_sid2(&sid, &tmp_sid);
+
+ result = cli_samr_query_useraliases(cli, mem_ctx, &domain_pol, 1, &sid, &num_aliases, &alias_rids);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -866,8 +851,11 @@ static NTSTATUS cmd_samr_enum_als_groups(struct cli_state *cli,
uint32 start_idx, size, num_als_groups, i;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
struct acct_info *als_groups;
+ DOM_SID global_sid_Builtin;
BOOL got_connect_pol = False, got_domain_pol = False;
+ string_to_sid(&global_sid_Builtin, "S-1-5-32");
+
if ((argc < 2) || (argc > 3)) {
printf("Usage: %s builtin|domain [access mask]\n", argv[0]);
return NT_STATUS_OK;
@@ -945,6 +933,9 @@ static NTSTATUS cmd_samr_query_aliasmem(struct cli_state *cli,
uint32 alias_rid, num_members, i;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
DOM_SID *alias_sids;
+ DOM_SID global_sid_Builtin;
+
+ string_to_sid(&global_sid_Builtin, "S-1-5-32");
if ((argc < 3) || (argc > 4)) {
printf("Usage: %s builtin|domain rid [access mask]\n", argv[0]);
@@ -1270,15 +1261,6 @@ static NTSTATUS cmd_samr_create_dom_user(struct cli_state *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- result = cli_samr_close(cli, mem_ctx, &user_pol);
- if (!NT_STATUS_IS_OK(result)) goto done;
-
- result = cli_samr_close(cli, mem_ctx, &domain_pol);
- if (!NT_STATUS_IS_OK(result)) goto done;
-
- result = cli_samr_close(cli, mem_ctx, &connect_pol);
- if (!NT_STATUS_IS_OK(result)) goto done;
-
done:
return result;
}
@@ -1330,15 +1312,6 @@ static NTSTATUS cmd_samr_create_dom_group(struct cli_state *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- result = cli_samr_close(cli, mem_ctx, &group_pol);
- if (!NT_STATUS_IS_OK(result)) goto done;
-
- result = cli_samr_close(cli, mem_ctx, &domain_pol);
- if (!NT_STATUS_IS_OK(result)) goto done;
-
- result = cli_samr_close(cli, mem_ctx, &connect_pol);
- if (!NT_STATUS_IS_OK(result)) goto done;
-
done:
return result;
}
@@ -1355,6 +1328,9 @@ static NTSTATUS cmd_samr_lookup_names(struct cli_state *cli,
uint32 num_rids, num_names, *name_types, *rids;
const char **names;
int i;
+ DOM_SID global_sid_Builtin;
+
+ string_to_sid(&global_sid_Builtin, "S-1-5-32");
if (argc < 3) {
printf("Usage: %s domain|builtin name1 [name2 [name3] [...]]\n", argv[0]);