[SCM] Samba Shared Repository - branch master updated
Günther Deschner
gd at samba.org
Wed Oct 28 05:38:07 MDT 2009
The branch, master has been updated
via 4df8426... s3-passdb: move open_schannel_session_store() to passdb/secrets_schannel.c.
via 96bffa5... s3-net: acct_flags are uint32_t in net_sam_set_userflag().
via a8d9c64... adssearch: dump some more nttime timestamps.
via abe9417... s3-lsa: add lsa_trusted_domain_mapping.
via 1f9d06a... lsa: add LSA_TRUSTED_DOMAIN access masks.
via bda047a... s3-passdb: add secrets_delete_generic().
via 7791d29... s3-lsa: add lsa_secret_mapping.
via 80d8b2e... lsa: add LSA_SECRET access masks.
via 880666c... s3-lsa: use correct function name in_lsa_RemoveAccountRights().
via c352a73... s3-lsa: pure cosmetic indentation fixes.
via 6937e01... s3-lsa: use enum lsa_LookupNamesLevel in lsa_lookup_level_to_flags().
from 90862a5... ldb:tdb backend - be also here more careful with the result value
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 4df8426768b96ae263fa54cdee86b6a13d5aea57
Author: Günther Deschner <gd at samba.org>
Date: Wed Oct 28 11:36:13 2009 +0100
s3-passdb: move open_schannel_session_store() to passdb/secrets_schannel.c.
Guenther
commit 96bffa5bbd432310243b9d90dced7fb63c72af66
Author: Günther Deschner <gd at samba.org>
Date: Wed Oct 28 10:56:01 2009 +0100
s3-net: acct_flags are uint32_t in net_sam_set_userflag().
Guenther
commit a8d9c64e0fe6e0bcb4c9751cba0bc7fcc9f152ba
Author: Günther Deschner <gd at samba.org>
Date: Wed Oct 28 10:55:14 2009 +0100
adssearch: dump some more nttime timestamps.
Guenther
commit abe9417303e7d917054f00e136796012ef763fa0
Author: Günther Deschner <gd at samba.org>
Date: Tue Oct 27 15:29:02 2009 +0100
s3-lsa: add lsa_trusted_domain_mapping.
Guenther
commit 1f9d06a1b0ff787db46af25bf68f194a08ac6c8e
Author: Günther Deschner <gd at samba.org>
Date: Tue Oct 27 15:28:06 2009 +0100
lsa: add LSA_TRUSTED_DOMAIN access masks.
Guenther
commit bda047afbc4188bce0538ad128bea000c9652388
Author: Günther Deschner <gd at samba.org>
Date: Tue Oct 27 14:59:25 2009 +0100
s3-passdb: add secrets_delete_generic().
Guenther
commit 7791d29c79e3bb7d4759ba9c31151d268df2d247
Author: Günther Deschner <gd at samba.org>
Date: Tue Oct 27 13:50:43 2009 +0100
s3-lsa: add lsa_secret_mapping.
Guenther
commit 80d8b2e180bde08a9339d6f4c1c7df15874954a7
Author: Günther Deschner <gd at samba.org>
Date: Tue Oct 27 13:49:21 2009 +0100
lsa: add LSA_SECRET access masks.
Guenther
commit 880666cd940c9cda8f6906478a700e2904d537bf
Author: Günther Deschner <gd at samba.org>
Date: Mon Oct 26 23:47:01 2009 +0100
s3-lsa: use correct function name in_lsa_RemoveAccountRights().
Guenther
commit c352a73badefd8d97389aff58e555a0348b5f411
Author: Günther Deschner <gd at samba.org>
Date: Mon Oct 26 23:37:21 2009 +0100
s3-lsa: pure cosmetic indentation fixes.
Guenther
commit 6937e01e3eb13108e1dc12a986dfde49fa8a3671
Author: Günther Deschner <gd at samba.org>
Date: Mon Oct 26 23:28:30 2009 +0100
s3-lsa: use enum lsa_LookupNamesLevel in lsa_lookup_level_to_flags().
Guenther
-----------------------------------------------------------------------
Summary of changes:
examples/misc/adssearch.pl | 2 +
librpc/gen_ndr/lsa.h | 8 ++++
librpc/idl/lsa.idl | 48 +++++++++++++++++++++++++
source3/include/proto.h | 3 +-
source3/passdb/secrets.c | 69 ++++++-------------------------------
source3/passdb/secrets_schannel.c | 63 +++++++++++++++++++++++++++++++++
source3/rpc_server/srv_lsa_nt.c | 63 ++++++++++++++++++++-------------
source3/utils/net_sam.c | 2 +-
8 files changed, 173 insertions(+), 85 deletions(-)
Changeset truncated at 500 lines:
diff --git a/examples/misc/adssearch.pl b/examples/misc/adssearch.pl
index 026853d..13a85be 100755
--- a/examples/misc/adssearch.pl
+++ b/examples/misc/adssearch.pl
@@ -518,6 +518,7 @@ my %attr_handler = (
"instanceType" => \&dump_instance_type,
"lastLogon" => \&dump_nttime,
"lastLogonTimestamp" => \&dump_nttime,
+ "lastSetTime" => \&dump_nttime,
"lockOutObservationWindow" => \&dump_nttime_abs,
"lockoutDuration" => \&dump_nttime_abs,
"lockoutTime" => \&dump_nttime,
@@ -538,6 +539,7 @@ my %attr_handler = (
"objectSid" => \&dump_sid,
"pKT" => \&dump_pkt,
"pKTGuid" => \&dump_guid,
+ "priorSetTime" => \&dump_nttime,
"pwdLastSet" => \&dump_nttime,
"pwdProperties" => \&dump_pwdproperties,
"sAMAccountType" => \&dump_atype,
diff --git a/librpc/gen_ndr/lsa.h b/librpc/gen_ndr/lsa.h
index f101fb6..a0af571 100644
--- a/librpc/gen_ndr/lsa.h
+++ b/librpc/gen_ndr/lsa.h
@@ -17,6 +17,14 @@
#define LSA_ACCOUNT_READ ( (STANDARD_RIGHTS_READ_ACCESS|LSA_ACCOUNT_VIEW) )
#define LSA_ACCOUNT_WRITE ( (STANDARD_RIGHTS_READ_ACCESS|LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_QUOTAS|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS) )
#define LSA_ACCOUNT_EXECUTE ( (STANDARD_RIGHTS_EXECUTE_ACCESS) )
+#define LSA_SECRET_ALL_ACCESS ( (LSA_SECRET_QUERY_VALUE|LSA_SECRET_SET_VALUE|SEC_STD_DELETE|STANDARD_RIGHTS_READ_ACCESS|SEC_STD_WRITE_DAC|SEC_STD_WRITE_OWNER) )
+#define LSA_SECRET_READ ( (LSA_SECRET_QUERY_VALUE|STANDARD_RIGHTS_READ_ACCESS) )
+#define LSA_SECRET_WRITE ( (LSA_SECRET_SET_VALUE|STANDARD_RIGHTS_READ_ACCESS) )
+#define LSA_SECRET_EXECUTE ( (STANDARD_RIGHTS_READ_ACCESS) )
+#define LSA_TRUSTED_DOMAIN_ALL_ACCESS ( (LSA_TRUSTED_QUERY_DOMAIN_NAME|LSA_TRUSTED_QUERY_CONTROLLERS|LSA_TRUSTED_SET_CONTROLLERS|LSA_TRUSTED_QUERY_POSIX|LSA_TRUSTED_SET_POSIX|LSA_TRUSTED_SET_AUTH|LSA_TRUSTED_QUERY_AUTH|SEC_STD_DELETE|STANDARD_RIGHTS_READ_ACCESS|SEC_STD_WRITE_DAC|SEC_STD_WRITE_OWNER) )
+#define LSA_TRUSTED_DOMAIN_READ ( (LSA_TRUSTED_QUERY_DOMAIN_NAME|STANDARD_RIGHTS_READ_ACCESS) )
+#define LSA_TRUSTED_DOMAIN_WRITE ( (LSA_TRUSTED_SET_CONTROLLERS|LSA_TRUSTED_SET_POSIX|LSA_TRUSTED_SET_AUTH|STANDARD_RIGHTS_READ_ACCESS) )
+#define LSA_TRUSTED_DOMAIN_EXECUTE ( (LSA_TRUSTED_QUERY_DOMAIN_NAME|LSA_TRUSTED_QUERY_POSIX|STANDARD_RIGHTS_READ_ACCESS) )
#define LSA_ENUM_TRUST_DOMAIN_MULTIPLIER ( 60 )
#define LSA_REF_DOMAIN_LIST_MULTIPLIER ( 32 )
#define LSA_ENUM_TRUST_DOMAIN_EX_MULTIPLIER ( 82 )
diff --git a/librpc/idl/lsa.idl b/librpc/idl/lsa.idl
index 58e0ea9..a893786 100644
--- a/librpc/idl/lsa.idl
+++ b/librpc/idl/lsa.idl
@@ -213,6 +213,25 @@ import "misc.idl", "security.idl";
LSA_SECRET_QUERY_VALUE = 0x00000002
} lsa_SecretAccessMask;
+ const int LSA_SECRET_ALL_ACCESS =
+ (LSA_SECRET_QUERY_VALUE |
+ LSA_SECRET_SET_VALUE |
+ SEC_STD_DELETE |
+ STANDARD_RIGHTS_READ_ACCESS |
+ SEC_STD_WRITE_DAC |
+ SEC_STD_WRITE_OWNER); /* 0x000F0003 */
+
+ const int LSA_SECRET_READ =
+ (LSA_SECRET_QUERY_VALUE |
+ STANDARD_RIGHTS_READ_ACCESS); /* 0x00020002 */
+
+ const int LSA_SECRET_WRITE =
+ (LSA_SECRET_SET_VALUE |
+ STANDARD_RIGHTS_READ_ACCESS); /* 0x00020001 */
+
+ const int LSA_SECRET_EXECUTE =
+ (STANDARD_RIGHTS_READ_ACCESS); /* 0x00020000 */
+
typedef [public,bitmap32bit] bitmap {
LSA_TRUSTED_QUERY_DOMAIN_NAME = 0x00000001,
LSA_TRUSTED_QUERY_CONTROLLERS = 0x00000002,
@@ -223,6 +242,35 @@ import "misc.idl", "security.idl";
LSA_TRUSTED_QUERY_AUTH = 0x00000040
} lsa_TrustedAccessMask;
+ const int LSA_TRUSTED_DOMAIN_ALL_ACCESS =
+ (LSA_TRUSTED_QUERY_DOMAIN_NAME |
+ LSA_TRUSTED_QUERY_CONTROLLERS |
+ LSA_TRUSTED_SET_CONTROLLERS |
+ LSA_TRUSTED_QUERY_POSIX |
+ LSA_TRUSTED_SET_POSIX |
+ LSA_TRUSTED_SET_AUTH |
+ LSA_TRUSTED_QUERY_AUTH |
+ SEC_STD_DELETE |
+ STANDARD_RIGHTS_READ_ACCESS |
+ SEC_STD_WRITE_DAC |
+ SEC_STD_WRITE_OWNER); /* 0x000F007F */
+
+ const int LSA_TRUSTED_DOMAIN_READ =
+ (LSA_TRUSTED_QUERY_DOMAIN_NAME |
+ STANDARD_RIGHTS_READ_ACCESS); /* 0x00020001 */
+
+ const int LSA_TRUSTED_DOMAIN_WRITE =
+ (LSA_TRUSTED_SET_CONTROLLERS |
+ LSA_TRUSTED_SET_POSIX |
+ LSA_TRUSTED_SET_AUTH |
+ STANDARD_RIGHTS_READ_ACCESS); /* 0x00020034 */
+
+ const int LSA_TRUSTED_DOMAIN_EXECUTE =
+ (LSA_TRUSTED_QUERY_DOMAIN_NAME |
+ LSA_TRUSTED_QUERY_POSIX |
+ STANDARD_RIGHTS_READ_ACCESS); /* 0x0002000C */
+
+
/* notice the screwup with the system_name - thats why MS created
OpenPolicy2 */
[public] NTSTATUS lsa_OpenPolicy (
diff --git a/source3/include/proto.h b/source3/include/proto.h
index dd87ef0..c867700 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4709,14 +4709,15 @@ NTSTATUS secrets_trusted_domains(TALLOC_CTX *mem_ctx, uint32 *num_domains,
bool secrets_store_afs_keyfile(const char *cell, const struct afs_keyfile *keyfile);
bool secrets_fetch_afs_key(const char *cell, struct afs_key *result);
void secrets_fetch_ipc_userpass(char **username, char **domain, char **password);
-TDB_CONTEXT *open_schannel_session_store(TALLOC_CTX *mem_ctx);
bool secrets_store_generic(const char *owner, const char *key, const char *secret);
char *secrets_fetch_generic(const char *owner, const char *key);
+bool secrets_delete_generic(const char *owner, const char *key);
bool secrets_store_local_schannel_key(uint8_t schannel_key[16]);
bool secrets_fetch_local_schannel_key(uint8_t schannel_key[16]);
/* The following definitions come from passdb/secrets_schannel.c */
+TDB_CONTEXT *open_schannel_session_store(TALLOC_CTX *mem_ctx);
NTSTATUS schannel_fetch_session_key(TALLOC_CTX *mem_ctx,
const char *computer_name,
struct netlogon_creds_CredentialState **pcreds);
diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c
index 29e0662..369abf8 100644
--- a/source3/passdb/secrets.c
+++ b/source3/passdb/secrets.c
@@ -1132,70 +1132,23 @@ void secrets_fetch_ipc_userpass(char **username, char **domain, char **password)
}
}
-/******************************************************************************
- Open or create the schannel session store tdb.
-*******************************************************************************/
-
-#define SCHANNEL_STORE_VERSION_1 1
-#define SCHANNEL_STORE_VERSION_2 2 /* should not be used */
-#define SCHANNEL_STORE_VERSION_CURRENT SCHANNEL_STORE_VERSION_1
-
-TDB_CONTEXT *open_schannel_session_store(TALLOC_CTX *mem_ctx)
+bool secrets_store_generic(const char *owner, const char *key, const char *secret)
{
- TDB_DATA vers;
- uint32 ver;
- TDB_CONTEXT *tdb_sc = NULL;
- char *fname = talloc_asprintf(mem_ctx, "%s/schannel_store.tdb", lp_private_dir());
-
- if (!fname) {
- return NULL;
- }
-
- tdb_sc = tdb_open_log(fname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+ char *tdbkey = NULL;
+ bool ret;
- if (!tdb_sc) {
- DEBUG(0,("open_schannel_session_store: Failed to open %s\n", fname));
- TALLOC_FREE(fname);
- return NULL;
- }
-
- again:
- vers = tdb_fetch_bystring(tdb_sc, "SCHANNEL_STORE_VERSION");
- if (vers.dptr == NULL) {
- /* First opener, no version. */
- SIVAL(&ver,0,SCHANNEL_STORE_VERSION_CURRENT);
- vers.dptr = (uint8 *)&ver;
- vers.dsize = 4;
- tdb_store_bystring(tdb_sc, "SCHANNEL_STORE_VERSION", vers, TDB_REPLACE);
- vers.dptr = NULL;
- } else if (vers.dsize == 4) {
- ver = IVAL(vers.dptr,0);
- if (ver == SCHANNEL_STORE_VERSION_2) {
- DEBUG(0,("open_schannel_session_store: wrong version number %d in %s\n",
- (int)ver, fname ));
- tdb_wipe_all(tdb_sc);
- goto again;
- }
- if (ver != SCHANNEL_STORE_VERSION_CURRENT) {
- DEBUG(0,("open_schannel_session_store: wrong version number %d in %s\n",
- (int)ver, fname ));
- tdb_close(tdb_sc);
- tdb_sc = NULL;
- }
- } else {
- tdb_close(tdb_sc);
- tdb_sc = NULL;
- DEBUG(0,("open_schannel_session_store: wrong version number size %d in %s\n",
- (int)vers.dsize, fname ));
+ if (asprintf(&tdbkey, "SECRETS/GENERIC/%s/%s", owner, key) < 0) {
+ DEBUG(0, ("asprintf failed!\n"));
+ return False;
}
- SAFE_FREE(vers.dptr);
- TALLOC_FREE(fname);
+ ret = secrets_store(tdbkey, secret, strlen(secret)+1);
- return tdb_sc;
+ SAFE_FREE(tdbkey);
+ return ret;
}
-bool secrets_store_generic(const char *owner, const char *key, const char *secret)
+bool secrets_delete_generic(const char *owner, const char *key)
{
char *tdbkey = NULL;
bool ret;
@@ -1205,7 +1158,7 @@ bool secrets_store_generic(const char *owner, const char *key, const char *secre
return False;
}
- ret = secrets_store(tdbkey, secret, strlen(secret)+1);
+ ret = secrets_delete(tdbkey);
SAFE_FREE(tdbkey);
return ret;
diff --git a/source3/passdb/secrets_schannel.c b/source3/passdb/secrets_schannel.c
index 84a860e..f4da625 100644
--- a/source3/passdb/secrets_schannel.c
+++ b/source3/passdb/secrets_schannel.c
@@ -21,6 +21,69 @@
#include "../libcli/auth/schannel_state.h"
/******************************************************************************
+ Open or create the schannel session store tdb.
+*******************************************************************************/
+
+#define SCHANNEL_STORE_VERSION_1 1
+#define SCHANNEL_STORE_VERSION_2 2 /* should not be used */
+#define SCHANNEL_STORE_VERSION_CURRENT SCHANNEL_STORE_VERSION_1
+
+TDB_CONTEXT *open_schannel_session_store(TALLOC_CTX *mem_ctx)
+{
+ TDB_DATA vers;
+ uint32 ver;
+ TDB_CONTEXT *tdb_sc = NULL;
+ char *fname = talloc_asprintf(mem_ctx, "%s/schannel_store.tdb", lp_private_dir());
+
+ if (!fname) {
+ return NULL;
+ }
+
+ tdb_sc = tdb_open_log(fname, 0, TDB_DEFAULT, O_RDWR|O_CREAT, 0600);
+
+ if (!tdb_sc) {
+ DEBUG(0,("open_schannel_session_store: Failed to open %s\n", fname));
+ TALLOC_FREE(fname);
+ return NULL;
+ }
+
+ again:
+ vers = tdb_fetch_bystring(tdb_sc, "SCHANNEL_STORE_VERSION");
+ if (vers.dptr == NULL) {
+ /* First opener, no version. */
+ SIVAL(&ver,0,SCHANNEL_STORE_VERSION_CURRENT);
+ vers.dptr = (uint8 *)&ver;
+ vers.dsize = 4;
+ tdb_store_bystring(tdb_sc, "SCHANNEL_STORE_VERSION", vers, TDB_REPLACE);
+ vers.dptr = NULL;
+ } else if (vers.dsize == 4) {
+ ver = IVAL(vers.dptr,0);
+ if (ver == SCHANNEL_STORE_VERSION_2) {
+ DEBUG(0,("open_schannel_session_store: wrong version number %d in %s\n",
+ (int)ver, fname ));
+ tdb_wipe_all(tdb_sc);
+ goto again;
+ }
+ if (ver != SCHANNEL_STORE_VERSION_CURRENT) {
+ DEBUG(0,("open_schannel_session_store: wrong version number %d in %s\n",
+ (int)ver, fname ));
+ tdb_close(tdb_sc);
+ tdb_sc = NULL;
+ }
+ } else {
+ tdb_close(tdb_sc);
+ tdb_sc = NULL;
+ DEBUG(0,("open_schannel_session_store: wrong version number size %d in %s\n",
+ (int)vers.dsize, fname ));
+ }
+
+ SAFE_FREE(vers.dptr);
+ TALLOC_FREE(fname);
+
+ return tdb_sc;
+}
+
+/******************************************************************************
Wrapper around schannel_fetch_session_key_tdb()
Note we must be root here.
*******************************************************************************/
diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index a9a4fa5..d90dfee 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -59,6 +59,20 @@ const struct generic_mapping lsa_policy_mapping = {
LSA_POLICY_ALL_ACCESS
};
+const struct generic_mapping lsa_secret_mapping = {
+ LSA_SECRET_READ,
+ LSA_SECRET_WRITE,
+ LSA_SECRET_EXECUTE,
+ LSA_SECRET_ALL_ACCESS
+};
+
+const struct generic_mapping lsa_trusted_domain_mapping = {
+ LSA_TRUSTED_DOMAIN_READ,
+ LSA_TRUSTED_DOMAIN_WRITE,
+ LSA_TRUSTED_DOMAIN_EXECUTE,
+ LSA_TRUSTED_DOMAIN_ALL_ACCESS
+};
+
/***************************************************************************
init_lsa_ref_domain_list - adds a domain if it's not already in, returns the index.
***************************************************************************/
@@ -372,9 +386,8 @@ NTSTATUS _lsa_OpenPolicy2(pipes_struct *p,
}
status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, des_access,
- &acc_granted, "_lsa_OpenPolicy2" );
-
+ NULL, 0, des_access,
+ &acc_granted, "_lsa_OpenPolicy2" );
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -1017,23 +1030,24 @@ NTSTATUS _lsa_LookupSids3(pipes_struct *p,
/***************************************************************************
***************************************************************************/
-static int lsa_lookup_level_to_flags(uint16 level)
+static int lsa_lookup_level_to_flags(enum lsa_LookupNamesLevel level)
{
int flags;
switch (level) {
- case 1:
+ case LSA_LOOKUP_NAMES_ALL: /* 1 */
flags = LOOKUP_NAME_ALL;
break;
- case 2:
+ case LSA_LOOKUP_NAMES_DOMAINS_ONLY: /* 2 */
flags = LOOKUP_NAME_DOMAIN|LOOKUP_NAME_REMOTE|LOOKUP_NAME_ISOLATED;
break;
- case 3:
+ case LSA_LOOKUP_NAMES_PRIMARY_DOMAIN_ONLY: /* 3 */
flags = LOOKUP_NAME_DOMAIN|LOOKUP_NAME_ISOLATED;
break;
- case 4:
- case 5:
- case 6:
+ case LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY: /* 4 */
+ case LSA_LOOKUP_NAMES_FOREST_TRUSTS_ONLY: /* 5 */
+ case LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY2: /* 6 */
+ case LSA_LOOKUP_NAMES_RODC_REFERRAL_TO_FULL_DC: /* 7 */
default:
flags = LOOKUP_NAME_NONE;
break;
@@ -1674,9 +1688,9 @@ NTSTATUS _lsa_CreateAccount(pipes_struct *p,
return status;
}
- status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, r->in.access_mask,
- &acc_granted, "_lsa_CreateAccount");
+ status = access_check_object(psd, p->server_info->ptok,
+ NULL, 0, r->in.access_mask,
+ &acc_granted, "_lsa_CreateAccount");
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -1745,9 +1759,8 @@ NTSTATUS _lsa_OpenAccount(pipes_struct *p,
}
status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, des_access,
- &acc_granted, "_lsa_OpenAccount" );
-
+ NULL, 0, des_access,
+ &acc_granted, "_lsa_OpenAccount" );
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -2137,10 +2150,10 @@ NTSTATUS _lsa_AddAccountRights(pipes_struct *p,
* on the account sid. We don't check here so just use the latter. JRA.
*/
- status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|LSA_ACCOUNT_VIEW,
- &acc_granted, "_lsa_AddAccountRights" );
-
+ status = access_check_object(psd, p->server_info->ptok,
+ NULL, 0,
+ LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|LSA_ACCOUNT_VIEW,
+ &acc_granted, "_lsa_AddAccountRights" );
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -2207,11 +2220,11 @@ NTSTATUS _lsa_RemoveAccountRights(pipes_struct *p,
* and DELETE on the account sid.
*/
- status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|
- LSA_ACCOUNT_VIEW|STD_RIGHT_DELETE_ACCESS,
- &acc_granted, "_lsa_AddAccountRights" );
-
+ status = access_check_object(psd, p->server_info->ptok,
+ NULL, 0,
+ LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|
+ LSA_ACCOUNT_VIEW|STD_RIGHT_DELETE_ACCESS,
+ &acc_granted, "_lsa_RemoveAccountRights");
if (!NT_STATUS_IS_OK(status)) {
return status;
}
diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
index 95405f3..fe84ce4 100644
--- a/source3/utils/net_sam.c
+++ b/source3/utils/net_sam.c
@@ -137,7 +137,7 @@ static int net_sam_set_userflag(struct net_context *c, int argc,
enum lsa_SidType type;
const char *dom, *name;
NTSTATUS status;
- uint16 acct_flags;
+ uint32_t acct_flags;
if ((argc != 2) || c->display_usage ||
(!strequal(argv[1], "yes") &&
--
Samba Shared Repository
More information about the samba-cvs
mailing list