summaryrefslogtreecommitdiff
path: root/source4/librpc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-02-19 00:28:11 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:48:35 -0500
commitad7e7249b6d6e2e37868ff13236a60cfbadb7ef0 (patch)
tree2c902b0e4bfe748c992f8692bd2f16a73c2baaa3 /source4/librpc
parent5340489807985b3bb4c10eacfa701d643ee7a36c (diff)
downloadsamba-ad7e7249b6d6e2e37868ff13236a60cfbadb7ef0.tar.gz
samba-ad7e7249b6d6e2e37868ff13236a60cfbadb7ef0.tar.bz2
samba-ad7e7249b6d6e2e37868ff13236a60cfbadb7ef0.zip
r21441: create a union for the PrimaryKerberosBlob content
so that ndr_pull will fail if version isn't 3 and we notice if the format changes... metze (This used to be commit 91f7a094cfd04405c224b9579146d814cba507b3)
Diffstat (limited to 'source4/librpc')
-rw-r--r--source4/librpc/idl/drsblobs.idl24
1 files changed, 16 insertions, 8 deletions
diff --git a/source4/librpc/idl/drsblobs.idl b/source4/librpc/idl/drsblobs.idl
index ec2e2163f1..3b912548a2 100644
--- a/source4/librpc/idl/drsblobs.idl
+++ b/source4/librpc/idl/drsblobs.idl
@@ -270,17 +270,25 @@ interface drsblobs {
[value(0)] uint32 unknown2;
} package_PrimaryKerberosKey;
- typedef [public] struct {
- [value(3)] uint32 version;
- uint16 num_keys1;
- uint16 num_keys2;
+ typedef struct {
+ uint16 num_keys;
+ uint16 num_old_keys;
package_PrimaryKerberosString salt;
[value(0)] uint32 unknown1;
[value(0)] uint32 unknown2;
- package_PrimaryKerberosKey keys1[num_keys1];
- package_PrimaryKerberosKey keys2[num_keys2];
- udlong unknown3_1[num_keys1];
- udlong unknown3_2[num_keys2];
+ package_PrimaryKerberosKey keys[num_keys];
+ package_PrimaryKerberosKey old_keys[num_old_keys];
+ udlong unknown3[num_keys];
+ udlong unknown3_old[num_old_keys];
+ } package_PrimaryKerberosCtr3;
+
+ typedef [nodiscriminant] union {
+ [case(3)] package_PrimaryKerberosCtr3 ctr3;
+ } package_PrimaryKerberosCtr;
+
+ typedef [public] struct {
+ [value(3)] uint32 version;
+ [switch_is(version)] package_PrimaryKerberosCtr ctr;
} package_PrimaryKerberosBlob;
void decode_PrimaryKerberos(