summaryrefslogtreecommitdiff
path: root/source3/rpcclient/cmd_samr.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpcclient/cmd_samr.c')
-rw-r--r--source3/rpcclient/cmd_samr.c152
1 files changed, 9 insertions, 143 deletions
diff --git a/source3/rpcclient/cmd_samr.c b/source3/rpcclient/cmd_samr.c
index b4cfb1eb29..3cef720ac5 100644
--- a/source3/rpcclient/cmd_samr.c
+++ b/source3/rpcclient/cmd_samr.c
@@ -1207,14 +1207,13 @@ static NTSTATUS cmd_samr_delete_alias(struct rpc_pipe_client *cli,
/* Query display info */
-static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv,
- int opcode)
+static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ int argc, const char **argv)
{
POLICY_HND connect_pol, domain_pol;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- uint32 start_idx=0, max_entries=250, max_size = (uint32) -1, num_entries, i;
+ uint32 start_idx=0, max_entries=250, max_size = 0xffff, num_entries, i;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
uint32 info_level = 1;
SAM_DISPINFO_CTR ctr;
@@ -1250,7 +1249,6 @@ static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
if (argc >= 6)
sscanf(argv[5], "%x", &access_mask);
-
/* Get sam policy handle */
result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
@@ -1302,31 +1300,11 @@ static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
if (!got_params)
get_query_dispinfo_params(
loop_count, &max_entries, &max_size);
-
- switch (opcode) {
- case SAMR_QUERY_DISPINFO:
- result = rpccli_samr_query_dispinfo(cli, mem_ctx, &domain_pol,
- &start_idx, info_level,
- &num_entries, max_entries,
- max_size, &ctr);
- break;
- case SAMR_QUERY_DISPINFO2:
- result = rpccli_samr_query_dispinfo2(cli, mem_ctx, &domain_pol,
- &start_idx, info_level,
- &num_entries, max_entries,
- max_size, &ctr);
- break;
- case SAMR_QUERY_DISPINFO3:
- result = rpccli_samr_query_dispinfo3(cli, mem_ctx, &domain_pol,
- &start_idx, info_level,
- &num_entries, max_entries,
- max_size, &ctr);
- break;
- default:
- printf("unknown opcode: %d\n", opcode);
- return NT_STATUS_INVALID_PARAMETER;
- break;
- }
+
+ result = rpccli_samr_query_dispinfo(cli, mem_ctx, &domain_pol,
+ &start_idx, info_level,
+ &num_entries, max_entries,
+ max_size, &ctr);
loop_count++;
@@ -1363,114 +1341,6 @@ static NTSTATUS cmd_samr_query_dispinfo_int(struct rpc_pipe_client *cli,
return result;
}
-static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_query_dispinfo_int(cli, mem_ctx, argc, argv, SAMR_QUERY_DISPINFO);
-}
-
-static NTSTATUS cmd_samr_query_dispinfo2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_query_dispinfo_int(cli, mem_ctx, argc, argv, SAMR_QUERY_DISPINFO2);
-}
-
-static NTSTATUS cmd_samr_query_dispinfo3(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_query_dispinfo_int(cli, mem_ctx, argc, argv, SAMR_QUERY_DISPINFO3);
-}
-
-/* Query display info index */
-
-static NTSTATUS cmd_samr_get_dispenum_index_int(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv,
- int opcode)
-{
- POLICY_HND connect_pol, domain_pol;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
- uint16 info_level = 1;
- uint32 idx;
-
- if (argc < 2 || argc > 3) {
- printf("Usage: %s name [info level]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc >= 3) {
- sscanf(argv[2], "%hd", &info_level);
- }
-
- /* Get sam policy handle */
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
-
- if (!NT_STATUS_IS_OK(result)) {
- goto done;
- }
-
- /* Get domain policy handle */
-
- result = rpccli_samr_open_domain(cli, mem_ctx, &connect_pol,
- access_mask,
- &domain_sid, &domain_pol);
-
- if (!NT_STATUS_IS_OK(result)) {
- goto done;
- }
-
- /* Query display info index */
-
- switch (opcode) {
- case SAMR_GET_DISPENUM_INDEX:
- result = rpccli_samr_get_dispenum_index(cli, mem_ctx, &domain_pol,
- info_level, argv[1], &idx);
- break;
- case SAMR_GET_DISPENUM_INDEX2:
- result = rpccli_samr_get_dispenum_index2(cli, mem_ctx, &domain_pol,
- info_level, argv[1], &idx);
- break;
- default:
- printf("unknown opcode\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (NT_STATUS_IS_ERR(result)) {
- goto done;
- };
-
- printf("idx is: %d (0x%08x)\n", idx, idx);
-
- rpccli_samr_close(cli, mem_ctx, &domain_pol);
- rpccli_samr_close(cli, mem_ctx, &connect_pol);
- done:
- return result;
-}
-
-/* Query display info index */
-
-static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_get_dispenum_index_int(cli, mem_ctx, argc, argv, SAMR_GET_DISPENUM_INDEX);
-}
-
-/* Query display info index2 */
-
-static NTSTATUS cmd_samr_get_dispenum_index2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx,
- int argc, const char **argv)
-{
- return cmd_samr_get_dispenum_index_int(cli, mem_ctx, argc, argv, SAMR_GET_DISPENUM_INDEX2);
-}
-
/* Query domain info */
static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
@@ -2402,10 +2272,6 @@ struct cmd_set samr_commands[] = {
{ "queryaliasmem", RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasmem, NULL, PI_SAMR, NULL, "Query alias membership", "" },
{ "deletealias", RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, NULL, PI_SAMR, NULL, "Delete an alias", "" },
{ "querydispinfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, NULL, PI_SAMR, NULL, "Query display info", "" },
- { "querydispinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, NULL, PI_SAMR, NULL, "Query display info 2", "" },
- { "querydispinfo3", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, NULL, PI_SAMR, NULL, "Query display info 3", "" },
- { "getdispenumindex", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispenum_index, NULL, PI_SAMR, NULL, "Query display info index", "" },
- { "getdispenumindex2", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispenum_index2, NULL, PI_SAMR, NULL, "Query display info index", "" },
{ "querydominfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, NULL, PI_SAMR, NULL, "Query domain info", "" },
{ "enumdomusers", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users, NULL, PI_SAMR, NULL, "Enumerate domain users", "" },
{ "enumdomgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups, NULL, PI_SAMR, NULL, "Enumerate domain groups", "" },