summaryrefslogtreecommitdiff
path: root/librpc/idl
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2010-07-16 04:06:48 +0200
committerGünther Deschner <gd@samba.org>2010-08-25 13:27:50 +0200
commite2f15d2a25302ee529006b2d1d6b99993c7102e8 (patch)
tree0189ae9cc476c77cb1f0dde4aa7274cd4a7cc043 /librpc/idl
parent2eff142cce536a8966e63bdf9e514bc22d03acc4 (diff)
downloadsamba-e2f15d2a25302ee529006b2d1d6b99993c7102e8.tar.gz
samba-e2f15d2a25302ee529006b2d1d6b99993c7102e8.tar.bz2
samba-e2f15d2a25302ee529006b2d1d6b99993c7102e8.zip
s4-trusts: fix trustDomainPasswords drsblobs IDL and server side support.
Also remove bogus trustCurrentPasswords struct which we just had because our IDL was incorrect. Guenther
Diffstat (limited to 'librpc/idl')
-rw-r--r--librpc/idl/drsblobs.idl34
1 files changed, 16 insertions, 18 deletions
diff --git a/librpc/idl/drsblobs.idl b/librpc/idl/drsblobs.idl
index 1b4649cff9..d16027055b 100644
--- a/librpc/idl/drsblobs.idl
+++ b/librpc/idl/drsblobs.idl
@@ -468,39 +468,37 @@ interface drsblobs {
typedef [public] struct {
NTTIME LastUpdateTime;
lsa_TrustAuthType AuthType;
-
[switch_is(AuthType)] AuthInfo AuthInfo;
[flag(NDR_ALIGN4)] DATA_BLOB _pad;
} AuthenticationInformation;
- typedef [nopull,nopush,noprint] struct {
- /* sizeis here is bogus, but this is here just for the structure */
- [size_is(1)] AuthenticationInformation array[];
+ /* count is not on the wire */
+ typedef [public,nopull,nopush,gensize] struct {
+ uint32 count;
+ AuthenticationInformation array[count];
} AuthenticationInformationArray;
- /* This is nopull,nopush because we pass count down to the
- * manual parser of AuthenticationInformationArray */
- typedef [public,nopull,nopush,noprint,gensize] struct {
+ /* we cannot use [relative] pointers here because Windows expects the
+ * previous_offset to match the total size of the struct in case
+ * the previous array is empty, see MS-LSAD 2.2.7.16 - gd */
+ typedef [public,gensize,nopush] struct {
uint32 count;
- [relative] AuthenticationInformationArray *current;
- [relative] AuthenticationInformationArray *previous;
+ [value((count > 0) ? 12 : 0)] uint32 current_offset;
+ [value((count > 0) ? 12 + ndr_size_AuthenticationInformationArray(&current, ndr->flags) : 0)] uint32 previous_offset;
+ [subcontext(0),subcontext_size((previous_offset)-(current_offset))] AuthenticationInformationArray current;
+ [subcontext(0)] [flag(NDR_REMAINING)] AuthenticationInformationArray previous;
} trustAuthInOutBlob;
[nopython] void decode_trustAuthInOut(
[in] trustAuthInOutBlob blob
);
- typedef [public,gensize] struct {
- uint32 count;
- [relative] AuthenticationInformation *current[count];
- } trustCurrentPasswords;
-
typedef [public,nopull] struct {
uint8 confounder[512];
- [subcontext(0),subcontext_size(outgoing_size)] trustCurrentPasswords outgoing;
- [subcontext(0),subcontext_size(incoming_size)] trustCurrentPasswords incoming;
- [value(ndr_size_trustCurrentPasswords(&outgoing, ndr->flags))] uint32 outgoing_size;
- [value(ndr_size_trustCurrentPasswords(&incoming, ndr->flags))] uint32 incoming_size;
+ [subcontext(0),subcontext_size(outgoing_size)] trustAuthInOutBlob outgoing;
+ [subcontext(0),subcontext_size(incoming_size)] trustAuthInOutBlob incoming;
+ [value(ndr_size_trustAuthInOutBlob(&outgoing, ndr->flags))] uint32 outgoing_size;
+ [value(ndr_size_trustAuthInOutBlob(&incoming, ndr->flags))] uint32 incoming_size;
} trustDomainPasswords;
[nopython] void decode_trustDomainPasswords(