[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-641-g65b4cb2
Günther Deschner
gd at samba.org
Fri Apr 4 07:59:21 GMT 2008
The branch, v3-2-test has been updated
via 65b4cb20ea3fb806cfd50281e08f32bea70fafce (commit)
via 352f8440c74bc22416e21783e1dc5fecf5869902 (commit)
via c7ae1a9b53ef578cf4dfdf8e05915817c69896b5 (commit)
via f550cdb6f240830ee1e3a2dfe5f4128bca0cf836 (commit)
from 37091859126167e84e55afe8a32025ac0f65065e (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 65b4cb20ea3fb806cfd50281e08f32bea70fafce
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 4 02:53:40 2008 +0200
Use sid_array_from_info3 in lookup_usergroups_cached().
Guenther
commit 352f8440c74bc22416e21783e1dc5fecf5869902
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 4 01:44:43 2008 +0200
Always uppercase cli->srv_name_slash.
Not that I think it is of any importance...
Guenther
commit c7ae1a9b53ef578cf4dfdf8e05915817c69896b5
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 4 01:44:16 2008 +0200
Remove some dead code in rpcclient.
Guenther
commit f550cdb6f240830ee1e3a2dfe5f4128bca0cf836
Author: Günther Deschner <gd at samba.org>
Date: Fri Apr 4 01:40:29 2008 +0200
Move rpccli_try_samr_connects out of rpcclient.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/auth/auth_util.c | 2 +-
source/lib/util_sid.c | 9 ++-
source/libsmb/cliconnect.c | 1 +
source/rpc_client/cli_samr.c | 44 ++++++++++
source/rpcclient/cmd_samr.c | 176 +++++++++++++++++----------------------
source/winbindd/winbindd_pam.c | 2 +-
source/winbindd/winbindd_util.c | 50 ++---------
7 files changed, 143 insertions(+), 141 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c
index a95a59e..7013285 100644
--- a/source/auth/auth_util.c
+++ b/source/auth/auth_util.c
@@ -1620,7 +1620,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
nt_status = sid_array_from_info3(result, info3,
&result->sids,
&result->num_sids,
- False);
+ false, false);
if (!NT_STATUS_IS_OK(nt_status)) {
TALLOC_FREE(result);
return nt_status;
diff --git a/source/lib/util_sid.c b/source/lib/util_sid.c
index fd2e93a..6b83f9c 100644
--- a/source/lib/util_sid.c
+++ b/source/lib/util_sid.c
@@ -668,7 +668,8 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
const struct netr_SamInfo3 *info3,
DOM_SID **user_sids,
size_t *num_user_sids,
- bool include_user_group_rid)
+ bool include_user_group_rid,
+ bool skip_ressource_groups)
{
NTSTATUS status;
DOM_SID sid;
@@ -728,6 +729,12 @@ NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
*/
for (i = 0; i < info3->sidcount; i++) {
+
+ if (skip_ressource_groups &&
+ (info3->sids[i].attributes & SE_GROUP_RESOURCE)) {
+ continue;
+ }
+
status = add_sid_to_array(mem_ctx, info3->sids[i].sid,
&sid_array, &num_sids);
if (!NT_STATUS_IS_OK(status)) {
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
index 5e8a586..8bdc284 100644
--- a/source/libsmb/cliconnect.c
+++ b/source/libsmb/cliconnect.c
@@ -1486,6 +1486,7 @@ NTSTATUS cli_connect(struct cli_state *cli,
fstrcpy(cli->desthost, host);
fstr_sprintf(cli->srv_name_slash, "\\\\%s", cli->desthost);
+ strupper_m(cli->srv_name_slash);
/* allow hostnames of the form NAME#xx and do a netbios lookup */
if ((p = strchr(cli->desthost, '#'))) {
diff --git a/source/rpc_client/cli_samr.c b/source/rpc_client/cli_samr.c
index f0763cc..fd4fbfc 100644
--- a/source/rpc_client/cli_samr.c
+++ b/source/rpc_client/cli_samr.c
@@ -225,3 +225,47 @@ void get_query_dispinfo_params(int loop_count, uint32 *max_entries,
break;
}
}
+
+NTSTATUS rpccli_try_samr_connects(struct rpc_pipe_client *cli,
+ TALLOC_CTX *mem_ctx,
+ uint32_t access_mask,
+ POLICY_HND *connect_pol)
+{
+ NTSTATUS status;
+ union samr_ConnectInfo info_in, info_out;
+ struct samr_ConnectInfo1 info1;
+ uint32_t lvl_out = 0;
+
+ ZERO_STRUCT(info1);
+
+ info1.client_version = SAMR_CONNECT_W2K;
+ info_in.info1 = info1;
+
+ status = rpccli_samr_Connect5(cli, mem_ctx,
+ cli->cli->srv_name_slash,
+ access_mask,
+ 1,
+ &info_in,
+ &lvl_out,
+ &info_out,
+ connect_pol);
+ if (NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ status = rpccli_samr_Connect4(cli, mem_ctx,
+ cli->cli->srv_name_slash,
+ SAMR_CONNECT_W2K,
+ access_mask,
+ connect_pol);
+ if (NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ status = rpccli_samr_Connect2(cli, mem_ctx,
+ cli->cli->srv_name_slash,
+ access_mask,
+ connect_pol);
+ return status;
+}
+
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 9cc47d1..e58354d 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -264,28 +264,6 @@ static void display_sam_info_5(struct samr_DispEntryAscii *r)
printf("Account: %s\n", r->account_name.string);
}
-/****************************************************************************
- Try samr_connect4 first, then samr_connect2 if it fails
- ****************************************************************************/
-static NTSTATUS try_samr_connects(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
- uint32 access_mask, POLICY_HND *connect_pol)
-{
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
-
- result = rpccli_samr_Connect4(cli, mem_ctx,
- cli->cli->desthost,
- SAMR_CONNECT_W2K,
- access_mask,
- connect_pol);
- if (!NT_STATUS_IS_OK(result)) {
- result = rpccli_samr_Connect2(cli, mem_ctx,
- cli->cli->desthost,
- access_mask,
- connect_pol);
- }
- return result;
-}
-
/**********************************************************************
* Query user information
*/
@@ -298,7 +276,6 @@ static NTSTATUS cmd_samr_query_user(struct rpc_pipe_client *cli,
uint32 info_level = 21;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
union samr_UserInfo *info = NULL;
- fstring server;
uint32 user_rid = 0;
if ((argc < 2) || (argc > 4)) {
@@ -315,11 +292,9 @@ static NTSTATUS cmd_samr_query_user(struct rpc_pipe_client *cli,
sscanf(argv[3], "%x", &access_mask);
- slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
- strupper_m(server);
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -489,7 +464,6 @@ static NTSTATUS cmd_samr_query_group(struct rpc_pipe_client *cli,
enum samr_GroupInfoEnum info_level = GROUPINFOALL;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
union samr_GroupInfo *group_info = NULL;
- fstring server;
uint32 group_rid;
if ((argc < 2) || (argc > 4)) {
@@ -505,11 +479,9 @@ static NTSTATUS cmd_samr_query_group(struct rpc_pipe_client *cli,
if (argc > 3)
sscanf(argv[3], "%x", &access_mask);
- slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
- strupper_m(server);
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -562,7 +534,6 @@ static NTSTATUS cmd_samr_query_usergroups(struct rpc_pipe_client *cli,
uint32 user_rid;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
int i;
- fstring server;
struct samr_RidWithAttributeArray *rid_array = NULL;
if ((argc < 2) || (argc > 3)) {
@@ -575,11 +546,9 @@ static NTSTATUS cmd_samr_query_usergroups(struct rpc_pipe_client *cli,
if (argc > 2)
sscanf(argv[2], "%x", &access_mask);
- slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
- strupper_m(server);
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -633,7 +602,6 @@ static NTSTATUS cmd_samr_query_useraliases(struct rpc_pipe_client *cli,
size_t num_sids;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
int i;
- fstring server;
struct lsa_SidArray sid_array;
struct samr_Ids alias_rids;
@@ -674,11 +642,9 @@ static NTSTATUS cmd_samr_query_useraliases(struct rpc_pipe_client *cli,
sid_array.num_sids = num_sids;
- slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
- strupper_m(server);
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -730,7 +696,6 @@ static NTSTATUS cmd_samr_query_groupmem(struct rpc_pipe_client *cli,
uint32 group_rid;
uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
int i;
- fstring server;
unsigned int old_timeout;
struct samr_RidTypeArray *rids = NULL;
@@ -744,11 +709,9 @@ static NTSTATUS cmd_samr_query_groupmem(struct rpc_pipe_client *cli,
if (argc > 2)
sscanf(argv[2], "%x", &access_mask);
- slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
- strupper_m(server);
-
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -822,8 +785,9 @@ static NTSTATUS cmd_samr_enum_dom_users(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -901,8 +865,9 @@ static NTSTATUS cmd_samr_enum_dom_groups(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -978,8 +943,9 @@ static NTSTATUS cmd_samr_enum_als_groups(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1065,9 +1031,9 @@ static NTSTATUS cmd_samr_enum_domains(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx,
- access_mask,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ access_mask,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result)) {
goto done;
@@ -1131,8 +1097,9 @@ static NTSTATUS cmd_samr_query_aliasmem(struct rpc_pipe_client *cli,
/* Open SAMR handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1219,9 +1186,9 @@ static NTSTATUS cmd_samr_query_aliasinfo(struct rpc_pipe_client *cli,
/* Open SAMR handle */
- result = try_samr_connects(cli, mem_ctx,
- SEC_FLAG_MAXIMUM_ALLOWED,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ SEC_FLAG_MAXIMUM_ALLOWED,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result)) {
goto done;
@@ -1317,8 +1284,9 @@ static NTSTATUS cmd_samr_delete_alias(struct rpc_pipe_client *cli,
/* Open SAMR handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1428,8 +1396,9 @@ static NTSTATUS cmd_samr_query_dispinfo_internal(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1602,8 +1571,9 @@ static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1705,8 +1675,9 @@ static NTSTATUS cmd_samr_create_dom_user(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1780,8 +1751,9 @@ static NTSTATUS cmd_samr_create_dom_group(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1845,8 +1817,9 @@ static NTSTATUS cmd_samr_create_dom_alias(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1909,8 +1882,9 @@ static NTSTATUS cmd_samr_lookup_names(struct rpc_pipe_client *cli,
/* Get sam policy and domain handles */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -1991,8 +1965,9 @@ static NTSTATUS cmd_samr_lookup_rids(struct rpc_pipe_client *cli,
/* Get sam policy and domain handles */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -2073,8 +2048,9 @@ static NTSTATUS cmd_samr_delete_dom_group(struct rpc_pipe_client *cli,
/* Get sam policy and domain handles */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -2153,8 +2129,9 @@ static NTSTATUS cmd_samr_delete_dom_user(struct rpc_pipe_client *cli,
/* Get sam policy and domain handles */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -2224,7 +2201,6 @@ static NTSTATUS cmd_samr_query_sec_obj(struct rpc_pipe_client *cli,
POLICY_HND connect_pol, domain_pol, user_pol, *pol;
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
uint32 sec_info = DACL_SECURITY_INFORMATION;
- fstring server;
uint32 user_rid = 0;
TALLOC_CTX *ctx = NULL;
SEC_DESC_BUF *sec_desc_buf=NULL;
@@ -2250,10 +2226,9 @@ static NTSTATUS cmd_samr_query_sec_obj(struct rpc_pipe_client *cli,
sec_info = atoi(argv[2]);
}
- slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost);
- strupper_m(server);
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -2324,8 +2299,9 @@ static NTSTATUS cmd_samr_get_usrdom_pwinfo(struct rpc_pipe_client *cli,
sscanf(argv[1], "%i", &rid);
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result)) {
goto done;
@@ -2412,7 +2388,9 @@ static NTSTATUS cmd_samr_lookup_domain(struct rpc_pipe_client *cli,
init_lsa_String(&domain_name, argv[1]);
- result = try_samr_connects(cli, mem_ctx, access_mask, &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ access_mask,
+ &connect_pol);
if (!NT_STATUS_IS_OK(result))
goto done;
@@ -2465,8 +2443,9 @@ static NTSTATUS cmd_samr_chgpasswd2(struct rpc_pipe_client *cli,
/* Get sam policy handle */
- result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
- &connect_pol);
+ result = rpccli_try_samr_connects(cli, mem_ctx,
+ MAXIMUM_ALLOWED_ACCESS,
+ &connect_pol);
--
Samba Shared Repository
More information about the samba-cvs
mailing list