[SCM] Samba Shared Repository - branch master updated
Andreas Schneider
asn at samba.org
Tue Nov 21 12:22:02 UTC 2023
The branch, master has been updated
via 8863d84d537 s3:rpc_client: Remove unused rpccli_lsa_open_policy2()
via 417c8180c44 s3:winbind: Always close the policy handle we opened
via 05a006fab94 s3:winbind: Use dcerpc_lsa_open_policy_fallback() in winbindd_cm.c
via 6b6a88cdddf s3:utils: Use any_nt_status_not_ok() in rpc_rights_grant_internal()
via 28e7a754c8d s3:utils: Use goto to close the policy in rpc_rights_grant_internal()
via e5abb584b64 s3:utils: Use dcerpc_lsa_open_policy_fallback() in net_rpc_rights.c
via 5b3e562006a s3:utils: Use dcerpc_lsa_open_policy_fallback() in net_rpc.c
via 48fe294e51d s3:rpcclient: Use dcerpc_lsa_open_policy_fallback() in cmd_lsarpc.c
via 367b946a34b s3:rpcclient: Remove trailing white spaces from cmd_lsarpc.c
via 4f7c395cd3d s3:libnetapi: Use dcerpc_lsa_open_policy_fallback() in localgroup.c
via bea13a02d4b s3:utils: Use dcerpc_lsa_open_policy_fallback() in net_rpc_trust.c
via 070cfeae527 s3:rpc_server: Use dcerpc_lsa_open_policy_fallback() for netlogon
via 0db702322ce s3:rpc_client: Implement dcerpc_lsa_open_policy_fallback()
via aecd73becca s3:rpc_client: Implement dcerpc_lsa_open_policy3()
via f5a4dcb0a7c s4:torture: Implement lsa_OpenPolicy3 tests
via d18ce289054 s3:rpc_server: Implement _lsa_OpenPolicy3()
via 15cecaaf0f1 s4:rpc_server: Implement dcesrv_lsa_OpenPolicy3()
via 75e381d4433 s4:torture: Adapt LSA tests for newer Windows versions
via f5275ae3dcc lsa.idl: Backport changes from wireshark
via 5c72df15a87 lsa.idl: Add new functions and types
via 80ba5456d8c s4:rpc_server: Remove trailing white spaces from lsa_init.c
from 028c90547e3 python:tests: Add ndrdump test for GMSA Managed Password blobs
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 8863d84d537117e073da0a371bc153e16e4ebd9f
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 18:09:37 2023 +0200
s3:rpc_client: Remove unused rpccli_lsa_open_policy2()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
Autobuild-Date(master): Tue Nov 21 12:21:18 UTC 2023 on atb-devel-224
commit 417c8180c4406e9071ce88cfbe18d15e1f403fc1
Author: Andreas Schneider <asn at samba.org>
Date: Tue Oct 24 09:39:09 2023 +0200
s3:winbind: Always close the policy handle we opened
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 05a006fab946ec9dad820c2910bb9782c7fcd380
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 18:08:56 2023 +0200
s3:winbind: Use dcerpc_lsa_open_policy_fallback() in winbindd_cm.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 6b6a88cdddff8355299793189b1bf7e8f5a273f0
Author: Andreas Schneider <asn at samba.org>
Date: Thu Nov 2 08:31:32 2023 +0100
s3:utils: Use any_nt_status_not_ok() in rpc_rights_grant_internal()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 28e7a754c8d0d49729f6a85bdbfc02b1a7a023f5
Author: Andreas Schneider <asn at samba.org>
Date: Thu Nov 2 08:30:36 2023 +0100
s3:utils: Use goto to close the policy in rpc_rights_grant_internal()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit e5abb584b64c9e82ad73c0303c749688f306c455
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 17:57:09 2023 +0200
s3:utils: Use dcerpc_lsa_open_policy_fallback() in net_rpc_rights.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 5b3e562006a1f8f9fc31a74fe2037e83544de7b9
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 16:22:02 2023 +0200
s3:utils: Use dcerpc_lsa_open_policy_fallback() in net_rpc.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 48fe294e51de465482b0018e4ce10fe8ecdbd2a0
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 16:08:39 2023 +0200
s3:rpcclient: Use dcerpc_lsa_open_policy_fallback() in cmd_lsarpc.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 367b946a34b45036ceacf97e926be87c0b11316d
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 15:39:51 2023 +0200
s3:rpcclient: Remove trailing white spaces from cmd_lsarpc.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 4f7c395cd3d5cab9969a7778d0a5c3bca30d3db2
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 11:23:03 2023 +0200
s3:libnetapi: Use dcerpc_lsa_open_policy_fallback() in localgroup.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit bea13a02d4bc45b6041be435f129557fc1615ce3
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 10:27:12 2023 +0200
s3:utils: Use dcerpc_lsa_open_policy_fallback() in net_rpc_trust.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 070cfeae527ca9699b2afc42f01c12632464b5e3
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 10:19:08 2023 +0200
s3:rpc_server: Use dcerpc_lsa_open_policy_fallback() for netlogon
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 0db702322ce577bde6a21b36d6f8ae4cabb2de42
Author: Andreas Schneider <asn at samba.org>
Date: Mon Oct 23 15:35:38 2023 +0200
s3:rpc_client: Implement dcerpc_lsa_open_policy_fallback()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit aecd73beccacd61f5bb4fe38563fa2668cfc266c
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 10:18:23 2023 +0200
s3:rpc_client: Implement dcerpc_lsa_open_policy3()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit f5a4dcb0a7c88850b9dad83e10b5dd8fc1411468
Author: Andreas Schneider <asn at samba.org>
Date: Thu Jul 13 21:19:37 2023 +0200
s4:torture: Implement lsa_OpenPolicy3 tests
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit d18ce28905400d01872701b6884863b3bf26cff6
Author: Andreas Schneider <asn at samba.org>
Date: Thu Aug 31 09:19:35 2023 +0200
s3:rpc_server: Implement _lsa_OpenPolicy3()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 15cecaaf0f14e049cfc464665de2fe8734307397
Author: Andreas Schneider <asn at samba.org>
Date: Wed Aug 30 14:48:23 2023 +0200
s4:rpc_server: Implement dcesrv_lsa_OpenPolicy3()
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit 75e381d4433952eb01e0399bfffc5ce2bdae4f32
Author: Andreas Schneider <asn at samba.org>
Date: Wed Aug 30 07:46:42 2023 +0200
s4:torture: Adapt LSA tests for newer Windows versions
Newer Windows version directly disconnect the client. This is what
happens if the test is run against Windows Server 2022.
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
commit f5275ae3dcca0546ae73dcc16f3e68f314646915
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Mar 18 15:46:09 2022 +0100
lsa.idl: Backport changes from wireshark
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Andreas Schneider <asn at samba.org>
commit 5c72df15a87b38c0734297d90949a4e57e7b4703
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Mar 18 13:34:38 2022 +0100
lsa.idl: Add new functions and types
[MS-LSAD] got new functions in order to use AES encryption
and other security related features.
For our servers we still pretent we don't
know about the new functions and return DCERPC_FAULT_OP_RNG_ERROR.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Andreas Schneider <asn at samba.org>
commit 80ba5456d8cb9623c9b5a54571791dc4ac88571d
Author: Andreas Schneider <asn at samba.org>
Date: Wed Aug 30 09:24:06 2023 +0200
s4:rpc_server: Remove trailing white spaces from lsa_init.c
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Stefan Metzmacher <metze at samba.org>
-----------------------------------------------------------------------
Summary of changes:
librpc/idl/lsa.idl | 276 ++++++++++++-
source3/lib/netapi/localgroup.c | 28 +-
source3/rpc_client/cli_lsarpc.c | 86 +++-
source3/rpc_client/cli_lsarpc.h | 70 +++-
source3/rpc_server/lsa/srv_lsa_nt.c | 406 +++++++++++++++++++
source3/rpc_server/netlogon/srv_netlog_nt.c | 23 +-
source3/rpcclient/cmd_lsarpc.c | 603 ++++++++++++++++++++--------
source3/utils/net_rpc.c | 79 +++-
source3/utils/net_rpc_rights.c | 65 ++-
source3/utils/net_rpc_trust.c | 40 +-
source3/winbindd/winbindd_cm.c | 32 +-
source4/rpc_server/lsa/dcesrv_lsa.c | 516 +++++++++++++++++++++++-
source4/rpc_server/lsa/lsa_init.c | 102 ++++-
source4/torture/rpc/lsa.c | 185 ++++++++-
14 files changed, 2228 insertions(+), 283 deletions(-)
Changeset truncated at 500 lines:
diff --git a/librpc/idl/lsa.idl b/librpc/idl/lsa.idl
index 5f16fc06765..ede27c9fae4 100644
--- a/librpc/idl/lsa.idl
+++ b/librpc/idl/lsa.idl
@@ -113,9 +113,17 @@ import "misc.idl", "security.idl";
/******************/
/* Function: 0x06 */
+
+ typedef enum {
+ LSA_SECURITY_ANONYMOUS = 0,
+ LSA_SECURITY_IDENTIFICATION = 1,
+ LSA_SECURITY_IMPERSONATION = 2,
+ LSA_SECURITY_DELEGATION = 3
+ } lsa_SecurityImpersonationLevel;
+
typedef struct {
uint3264 len; /* ignored */
- uint16 impersonation_level;
+ lsa_SecurityImpersonationLevel impersonation_level;
uint8 context_mode;
uint8 effective_only;
} lsa_QosInfo;
@@ -412,7 +420,7 @@ import "misc.idl", "security.idl";
[case(LSA_POLICY_INFO_AUDIT_FULL_SET)] lsa_AuditFullSetInfo auditfullset;
[case(LSA_POLICY_INFO_AUDIT_FULL_QUERY)] lsa_AuditFullQueryInfo auditfullquery;
[case(LSA_POLICY_INFO_DNS)] lsa_DnsDomainInfo dns;
- [case(LSA_POLICY_INFO_DNS_INT)] lsa_DnsDomainInfo dns;
+ [case(LSA_POLICY_INFO_DNS_INT)] lsa_DnsDomainInfo dns_int;
[case(LSA_POLICY_INFO_L_ACCOUNT_DOMAIN)] lsa_DomainInfo l_account_domain;
} lsa_PolicyInformation;
@@ -686,7 +694,9 @@ import "misc.idl", "security.idl";
LSA_TRUSTED_DOMAIN_INFO_FULL_INFO_INTERNAL = 10,
LSA_TRUSTED_DOMAIN_INFO_INFO_EX2_INTERNAL = 11,
LSA_TRUSTED_DOMAIN_INFO_FULL_INFO_2_INTERNAL = 12,
- LSA_TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES = 13
+ LSA_TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES = 13,
+ LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO_INTERNAL_AES= 14,
+ LSA_TRUSTED_DOMAIN_INFO_FULL_INFO_INTERNAL_AES= 15
} lsa_TrustDomInfoEnum;
typedef [public,bitmap32bit] bitmap {
@@ -786,6 +796,18 @@ import "misc.idl", "security.idl";
lsa_TrustDomainInfoAuthInfoInternal auth_info;
} lsa_TrustDomainInfoFullInfoInternal;
+ typedef struct {
+ uint8 auth_data[64];
+ uint8 salt[16];
+ lsa_DATA_BUF2 cipher;
+ } lsa_TrustDomainInfoAuthInfoInternalAES;
+
+ typedef struct {
+ lsa_TrustDomainInfoInfoEx info_ex;
+ lsa_TrustDomainInfoPosixOffset posix_offset;
+ lsa_TrustDomainInfoAuthInfoInternalAES auth_info;
+ } lsa_TrustDomainInfoFullInfoInternalAES;
+
typedef struct {
lsa_TrustDomainInfoInfoEx info_ex;
uint32 forest_trust_length;
@@ -829,6 +851,10 @@ import "misc.idl", "security.idl";
lsa_TrustDomainInfoFullInfo2Internal full_info2_internal;
[case(LSA_TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES)]
lsa_TrustDomainInfoSupportedEncTypes enc_types;
+ [case(LSA_TRUSTED_DOMAIN_INFO_AUTH_INFO_INTERNAL_AES)]
+ lsa_TrustDomainInfoAuthInfoInternalAES auth_info_internal_aes;
+ [case(LSA_TRUSTED_DOMAIN_INFO_FULL_INFO_INTERNAL_AES)]
+ lsa_TrustDomainInfoFullInfoInternalAES full_info_internal_aes;
} lsa_TrustedDomainInfo;
/* Function: 0x1a */
@@ -1071,6 +1097,10 @@ import "misc.idl", "security.idl";
);
/* Function 0x35 */
+ typedef struct {
+ uint32 quality_of_service;
+ } lsa_DomainInfoQoS;
+
typedef [bitmap32bit] bitmap {
LSA_POLICY_KERBEROS_VALIDATE_CLIENT = 0x00000080
} lsa_krbAuthenticationOptions;
@@ -1092,25 +1122,27 @@ import "misc.idl", "security.idl";
} lsa_DomainInfoEfs;
typedef enum {
+ LSA_DOMAIN_INFO_POLICY_QOS=1,
LSA_DOMAIN_INFO_POLICY_EFS=2,
LSA_DOMAIN_INFO_POLICY_KERBEROS=3
} lsa_DomainInfoEnum;
- typedef [switch_type(uint16)] union {
+ typedef [switch_type(lsa_DomainInfoEnum)] union {
+ [case(LSA_DOMAIN_INFO_POLICY_QOS)] lsa_DomainInfoQoS qos_info;
[case(LSA_DOMAIN_INFO_POLICY_EFS)] lsa_DomainInfoEfs efs_info;
[case(LSA_DOMAIN_INFO_POLICY_KERBEROS)] lsa_DomainInfoKerberos kerberos_info;
} lsa_DomainInformationPolicy;
NTSTATUS lsa_QueryDomainInformationPolicy(
[in] policy_handle *handle,
- [in] uint16 level,
+ [in] lsa_DomainInfoEnum level,
[out,ref,switch_is(level)] lsa_DomainInformationPolicy **info
);
/* Function 0x36 */
NTSTATUS lsa_SetDomainInformationPolicy(
[in] policy_handle *handle,
- [in] uint16 level,
+ [in] lsa_DomainInfoEnum level,
[in,unique,switch_is(level)] lsa_DomainInformationPolicy *info
);
@@ -1289,8 +1321,13 @@ import "misc.idl", "security.idl";
LSA_FOREST_TRUST_TOP_LEVEL_NAME = 0,
LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX = 1,
LSA_FOREST_TRUST_DOMAIN_INFO = 2,
- LSA_FOREST_TRUST_RECORD_TYPE_LAST = 3
+ LSA_FOREST_TRUST_BINARY_DATA = 3,
+ LSA_FOREST_TRUST_SCANNER_INFO = 4
} lsa_ForestTrustRecordType;
+ const uint32 LSA_FOREST_TRUST_RECORD_TYPE_LAST =
+ LSA_FOREST_TRUST_BINARY_DATA;
+ const uint32 LSA_FOREST_TRUST_RECORD2_TYPE_LAST =
+ LSA_FOREST_TRUST_SCANNER_INFO;
typedef struct {
[range(0,131072)] uint3264 length;
@@ -1404,4 +1441,229 @@ import "misc.idl", "security.idl";
/* Function 0x51 */
[todo] NTSTATUS lsa_LSARADTREPORTSECURITYEVENT();
+ /* Function 0x52 (82) */
+ [todo] void lsa_Opnum82NotUsedOnWire(void);
+
+ /* Function 0x53 (83) */
+ [todo] void lsa_Opnum83NotUsedOnWire(void);
+
+ /* Function 0x54 (84) */
+ [todo] void lsa_Opnum84NotUsedOnWire(void);
+
+ /* Function 0x55 (85) */
+ [todo] void lsa_Opnum85NotUsedOnWire(void);
+
+ /* Function 0x56 (86) */
+ [todo] void lsa_Opnum86NotUsedOnWire(void);
+
+ /* Function 0x57 (87) */
+ [todo] void lsa_Opnum87NotUsedOnWire(void);
+
+ /* Function 0x58 (88) */
+ [todo] void lsa_Opnum88NotUsedOnWire(void);
+
+ /* Function 0x59 (89) */
+ [todo] void lsa_Opnum89NotUsedOnWire(void);
+
+ /* Function 0x5A (90) */
+ [todo] void lsa_Opnum90NotUsedOnWire(void);
+
+ /* Function 0x5B (91) */
+ [todo] void lsa_Opnum91NotUsedOnWire(void);
+
+ /* Function 0x5C (92) */
+ [todo] void lsa_Opnum92NotUsedOnWire(void);
+
+ /* Function 0x5D (93) */
+ [todo] void lsa_Opnum93NotUsedOnWire(void);
+
+ /* Function 0x5E (94) */
+ [todo] void lsa_Opnum94NotUsedOnWire(void);
+
+ /* Function 0x5F (95) */
+ [todo] void lsa_Opnum95NotUsedOnWire(void);
+
+ /* Function 0x60 (96) */
+ [todo] void lsa_Opnum96NotUsedOnWire(void);
+
+ /* Function 0x61 (97) */
+ [todo] void lsa_Opnum97NotUsedOnWire(void);
+
+ /* Function 0x62 (98) */
+ [todo] void lsa_Opnum98NotUsedOnWire(void);
+
+ /* Function 0x63 (99) */
+ [todo] void lsa_Opnum99NotUsedOnWire(void);
+
+ /* Function 0x64 (100) */
+ [todo] void lsa_Opnum100NotUsedOnWire(void);
+
+ /* Function 0x65 (101) */
+ [todo] void lsa_Opnum101NotUsedOnWire(void);
+
+ /* Function 0x66 (102) */
+ [todo] void lsa_Opnum102NotUsedOnWire(void);
+
+ /* Function 0x67 (103) */
+ [todo] void lsa_Opnum103NotUsedOnWire(void);
+
+ /* Function 0x68 (104) */
+ [todo] void lsa_Opnum104NotUsedOnWire(void);
+
+ /* Function 0x69 (105) */
+ [todo] void lsa_Opnum105NotUsedOnWire(void);
+
+ /* Function 0x6A (106) */
+ [todo] void lsa_Opnum106NotUsedOnWire(void);
+
+ /* Function 0x6B (107) */
+ [todo] void lsa_Opnum107NotUsedOnWire(void);
+
+ /* Function 0x6C (108) */
+ [todo] void lsa_Opnum108NotUsedOnWire(void);
+
+ /* Function 0x6D (109) */
+ [todo] void lsa_Opnum109NotUsedOnWire(void);
+
+ /* Function 0x6E (110) */
+ [todo] void lsa_Opnum110NotUsedOnWire(void);
+
+ /* Function 0x6F (111) */
+ [todo] void lsa_Opnum111NotUsedOnWire(void);
+
+ /* Function 0x70 (112) */
+ [todo] void lsa_Opnum112NotUsedOnWire(void);
+
+ /* Function 0x71 (113) */
+ [todo] void lsa_Opnum113NotUsedOnWire(void);
+
+ /* Function 0x72 (114) */
+ [todo] void lsa_Opnum114NotUsedOnWire(void);
+
+ /* Function 0x73 (115) */
+ [todo] void lsa_Opnum115NotUsedOnWire(void);
+
+ /* Function 0x74 (116) */
+ [todo] void lsa_Opnum116NotUsedOnWire(void);
+
+ /* Function 0x75 (117) */
+ [todo] void lsa_Opnum117NotUsedOnWire(void);
+
+ /* Function 0x76 (118) */
+ [todo] void lsa_Opnum118NotUsedOnWire(void);
+
+ /* Function 0x77 (119) */
+ [todo] void lsa_Opnum119NotUsedOnWire(void);
+
+ /* Function 0x78 (120) */
+ [todo] void lsa_Opnum120NotUsedOnWire(void);
+
+ /* Function 0x79 (121) */
+ [todo] void lsa_Opnum121NotUsedOnWire(void);
+
+ /* Function 0x7A (122) */
+ [todo] void lsa_Opnum122NotUsedOnWire(void);
+
+ /* Function 0x7B (123) */
+ [todo] void lsa_Opnum123NotUsedOnWire(void);
+
+ /* Function 0x7C (124) */
+ [todo] void lsa_Opnum124NotUsedOnWire(void);
+
+ /* Function 0x7D (125) */
+ [todo] void lsa_Opnum125NotUsedOnWire(void);
+
+ /* Function 0x7E (126) */
+ [todo] void lsa_Opnum126NotUsedOnWire(void);
+
+ /* Function 0x7F (127) */
+ [todo] void lsa_Opnum127NotUsedOnWire(void);
+
+ /* Function 0x80 (128) */
+ [todo] void lsa_Opnum128NotUsedOnWire(void);
+
+ /***********************/
+ /* Function 0x81 (129) */
+
+ NTSTATUS lsa_CreateTrustedDomainEx3(
+ [in] policy_handle *policy_handle,
+ [in] lsa_TrustDomainInfoInfoEx *info,
+ [in] lsa_TrustDomainInfoAuthInfoInternalAES *auth_info_internal,
+ [in] lsa_TrustedAccessMask access_mask,
+ [out] policy_handle *trustdom_handle
+ );
+
+ /***********************/
+ /* Function 0x82 (130) */
+
+ typedef [bitmap32bit] bitmap {
+ LSA_FEATURE_TDO_AUTH_INFO_AES_CIPHER = 0x00000001
+ } lsa_RevisionSupportedFeature;
+
+ typedef struct {
+ uint32 revision;
+ lsa_RevisionSupportedFeature supported_features;
+ } lsa_revision_info1;
+
+ typedef [switch_type(uint32)] union {
+ [case(1)] lsa_revision_info1 info1;
+ } lsa_revision_info;
+
+ [public] NTSTATUS lsa_OpenPolicy3 (
+ [in,unique] [string,charset(UTF16)] uint16 *system_name,
+ [in] lsa_ObjectAttribute *attr,
+ [in] lsa_PolicyAccessMask access_mask,
+ [in] uint32 in_version,
+ [in,ref][switch_is(in_version)] lsa_revision_info *in_revision_info,
+ [out,ref] uint32 *out_version,
+ [out,ref][switch_is(*out_version)] lsa_revision_info *out_revision_info,
+ [out,ref] policy_handle *handle
+ );
+
+ /* Function 0x83 (131) */
+ [todo] void lsa_Opnum131NotUsedOnWire(void);
+
+ /***********************/
+ /* Function 0x84 (132) */
+ typedef [switch_type(lsa_ForestTrustRecordType)] union {
+ [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME)] lsa_StringLarge top_level_name;
+ [case(LSA_FOREST_TRUST_TOP_LEVEL_NAME_EX)] lsa_StringLarge top_level_name_ex;
+ [case(LSA_FOREST_TRUST_DOMAIN_INFO)] lsa_ForestTrustDomainInfo domain_info;
+ [case(LSA_FOREST_TRUST_BINARY_DATA)] lsa_ForestTrustBinaryData data;
+ /*
+ * lsa_ForestTrustScannerInfo would have the same
+ * definition as lsa_ForestTrustDomainInfo
+ */
+ [case(LSA_FOREST_TRUST_SCANNER_INFO)] lsa_ForestTrustDomainInfo scanner_info;
+ } lsa_ForestTrustData2;
+
+ typedef struct {
+ lsa_ForestTrustRecordFlags flags;
+ lsa_ForestTrustRecordType type;
+ NTTIME_hyper time;
+ [switch_is(type)] lsa_ForestTrustData2 forest_trust_data;
+ } lsa_ForestTrustRecord2;
+
+ typedef [public] struct {
+ [range(0,4000)] uint32 count;
+ [size_is(count)] lsa_ForestTrustRecord2 **entries;
+ } lsa_ForestTrustInformation2;
+
+ [public] NTSTATUS lsa_lsaRQueryForestTrustInformation2(
+ [in] policy_handle *handle,
+ [in,ref] lsa_String *trusted_domain_name,
+ [in] lsa_ForestTrustRecordType highest_record_type,
+ [out,ref] lsa_ForestTrustInformation2 **forest_trust_info
+ );
+
+ /***********************/
+ /* Function 0x85 (133) */
+ [public] NTSTATUS lsa_lsaRSetForestTrustInformation2(
+ [in] policy_handle *handle,
+ [in,ref] lsa_StringLarge *trusted_domain_name,
+ [in] lsa_ForestTrustRecordType highest_record_type,
+ [in,ref] lsa_ForestTrustInformation2 *forest_trust_info,
+ [in] boolean8 check_only,
+ [out,ref] lsa_ForestTrustCollisionInfo **collision_info
+ );
}
diff --git a/source3/lib/netapi/localgroup.c b/source3/lib/netapi/localgroup.c
index 5d6ad174fb1..a63fca4366a 100644
--- a/source3/lib/netapi/localgroup.c
+++ b/source3/lib/netapi/localgroup.c
@@ -968,6 +968,12 @@ static NTSTATUS libnetapi_lsa_lookup_names3(TALLOC_CTX *mem_ctx,
struct lsa_String names;
uint32_t num_names = 1;
+ union lsa_revision_info out_revision_info = {
+ .info1 = {
+ .revision = 0,
+ },
+ };
+ uint32_t out_version = 0;
if (!sid || !name) {
return NT_STATUS_INVALID_PARAMETER;
@@ -977,13 +983,21 @@ static NTSTATUS libnetapi_lsa_lookup_names3(TALLOC_CTX *mem_ctx,
init_lsa_String(&names, name);
- status = rpccli_lsa_open_policy2(lsa_pipe, mem_ctx,
- false,
- SEC_STD_READ_CONTROL |
- LSA_POLICY_VIEW_LOCAL_INFORMATION |
- LSA_POLICY_LOOKUP_NAMES,
- &lsa_handle);
- NT_STATUS_NOT_OK_RETURN(status);
+ status = dcerpc_lsa_open_policy_fallback(
+ b,
+ mem_ctx,
+ lsa_pipe->srv_name_slash,
+ false,
+ SEC_STD_READ_CONTROL |
+ LSA_POLICY_VIEW_LOCAL_INFORMATION |
+ LSA_POLICY_LOOKUP_NAMES,
+ &out_version,
+ &out_revision_info,
+ &lsa_handle,
+ &result);
+ if (any_nt_status_not_ok(status, result, &status)) {
+ return status;
+ }
status = dcerpc_lsa_LookupNames3(b, mem_ctx,
&lsa_handle,
diff --git a/source3/rpc_client/cli_lsarpc.c b/source3/rpc_client/cli_lsarpc.c
index 1ea49781a4d..73b4872a2c4 100644
--- a/source3/rpc_client/cli_lsarpc.c
+++ b/source3/rpc_client/cli_lsarpc.c
@@ -126,30 +126,86 @@ NTSTATUS dcerpc_lsa_open_policy2(struct dcerpc_binding_handle *h,
result);
}
-/** Open a LSA policy handle
- *
- * @param cli Handle on an initialised SMB connection
- */
+NTSTATUS dcerpc_lsa_open_policy3(struct dcerpc_binding_handle *h,
+ TALLOC_CTX *mem_ctx,
+ const char *srv_name_slash,
+ bool sec_qos,
+ uint32_t des_access,
+ uint32_t *out_version,
+ union lsa_revision_info *out_revision_info,
+ struct policy_handle *pol,
+ NTSTATUS *result)
+{
+ struct lsa_ObjectAttribute attr = { .len = 0x18, };
+ struct lsa_QosInfo qos;
+ union lsa_revision_info in_revision_info = {
+ .info1 = {
+ .revision = 1,
+ },
+ };
+ uint32_t in_version = 1;
+
+ if (sec_qos) {
+ qos.len = 0xc;
+ qos.impersonation_level = 2;
+ qos.context_mode = 1;
+ qos.effective_only = 0;
+
+ attr.sec_qos = &qos;
+ }
-NTSTATUS rpccli_lsa_open_policy2(struct rpc_pipe_client *cli,
- TALLOC_CTX *mem_ctx, bool sec_qos,
- uint32_t des_access, struct policy_handle *pol)
+ return dcerpc_lsa_OpenPolicy3(h,
+ mem_ctx,
+ srv_name_slash,
+ &attr,
+ des_access,
+ in_version,
+ &in_revision_info,
+ out_version,
+ out_revision_info,
+ pol,
+ result);
+}
+
+NTSTATUS dcerpc_lsa_open_policy_fallback(struct dcerpc_binding_handle *h,
+ TALLOC_CTX *mem_ctx,
+ const char *srv_name_slash,
+ bool sec_qos,
+ uint32_t desired_access,
+ uint32_t *out_version,
+ union lsa_revision_info *out_revision_info,
+ struct policy_handle *pol,
+ NTSTATUS *result)
{
NTSTATUS status;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- status = dcerpc_lsa_open_policy2(cli->binding_handle,
+ status = dcerpc_lsa_open_policy3(h,
mem_ctx,
- cli->srv_name_slash,
+ srv_name_slash,
sec_qos,
- des_access,
+ desired_access,
+ out_version,
+ out_revision_info,
pol,
- &result);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
+ result);
+ if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE)) {
+ *out_version = 1;
+ *out_revision_info = (union lsa_revision_info) {
+ .info1 = {
+ .revision = 1,
+ }
+ };
+
+ status = dcerpc_lsa_open_policy2(h,
+ mem_ctx,
--
Samba Shared Repository
More information about the samba-cvs
mailing list