diff options
author | Jeremy Allison <jra@samba.org> | 2002-06-10 21:49:18 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-06-10 21:49:18 +0000 |
commit | de581b91e90702802ecb873d550f8a5228ef41f2 (patch) | |
tree | f102fdca26a6bfc1bdb1e594bcf8480df500c283 /source3 | |
parent | 959ff024daf61b86ec1d487582dd663ab95d24d1 (diff) | |
download | samba-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.h | 13 | ||||
-rw-r--r-- | source3/rpc_parse/parse_samr.c | 13 |
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)) |