summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2002-06-10 21:49:18 +0000
committerJeremy Allison <jra@samba.org>2002-06-10 21:49:18 +0000
commitde581b91e90702802ecb873d550f8a5228ef41f2 (patch)
treef102fdca26a6bfc1bdb1e594bcf8480df500c283 /source3
parent959ff024daf61b86ec1d487582dd663ab95d24d1 (diff)
downloadsamba-de581b91e90702802ecb873d550f8a5228ef41f2.tar.gz
samba-de581b91e90702802ecb873d550f8a5228ef41f2.tar.bz2
samba-de581b91e90702802ecb873d550f8a5228ef41f2.zip
Merge of Jerry's fix from 2.2.
Jeremy. (This used to be commit 64af68924b8fc36caac3f978dc0f9deccc41e059)
Diffstat (limited to 'source3')
-rw-r--r--source3/include/rpc_samr.h13
-rw-r--r--source3/rpc_parse/parse_samr.c13
2 files changed, 18 insertions, 8 deletions
diff --git a/source3/include/rpc_samr.h b/source3/include/rpc_samr.h
index 191a3695fb..1bb7a87b35 100644
--- a/source3/include/rpc_samr.h
+++ b/source3/include/rpc_samr.h
@@ -1693,9 +1693,16 @@ typedef struct q_samr_get_dom_pwinfo
/* SAMR_R_GET_DOM_PWINFO */
typedef struct r_samr_get_dom_pwinfo
{
- uint16 unk_0;
- uint16 unk_1;
- uint16 unk_2;
+ /*
+ * Previously this was 3 uint16's. However, after some tests
+ * it appears that the data len for the signing needs to be 16.
+ * Not sure how 3 unit16's ever worked since the length always
+ * turned out to 12. 3 uint32's + NT_STATUS == 16 bytes. Tested
+ * using NT and 2k. --jerry
+ */
+ uint32 unk_0;
+ uint32 unk_1;
+ uint32 unk_2;
NTSTATUS status;
} SAMR_R_GET_DOM_PWINFO;
diff --git a/source3/rpc_parse/parse_samr.c b/source3/rpc_parse/parse_samr.c
index 412dcd6501..8a741d768d 100644
--- a/source3/rpc_parse/parse_samr.c
+++ b/source3/rpc_parse/parse_samr.c
@@ -6719,13 +6719,16 @@ BOOL samr_io_r_get_dom_pwinfo(char *desc, SAMR_R_GET_DOM_PWINFO * r_u,
if(!prs_align(ps))
return False;
- if(!prs_uint16("unk_0", ps, depth, &r_u->unk_0))
- return False;
- if(!prs_uint16("unk_1", ps, depth, &r_u->unk_1))
+ /*
+ * We need 16 bytes here according to tests. Don't know
+ * what they are, but the length is important for the singing
+ */
+
+ if(!prs_uint32("unk_0", ps, depth, &r_u->unk_0))
return False;
- if(!prs_uint16("unk_2", ps, depth, &r_u->unk_2))
+ if(!prs_uint32("unk_1", ps, depth, &r_u->unk_1))
return False;
- if(!prs_align(ps))
+ if(!prs_uint32("unk_2", ps, depth, &r_u->unk_2))
return False;
if(!prs_ntstatus("status", ps, depth, &r_u->status))