diff options
author | Jeremy Allison <jra@samba.org> | 2006-09-23 18:24:03 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:01:04 -0500 |
commit | fd97f48ba38cb6a737302dac5cf23239ce7059cc (patch) | |
tree | 50cff02a4d03a0d62d9a5901923319680782e37b /source/rpc_parse | |
parent | 7c5d66c97111389b679aadb7b8b6721f07496bda (diff) | |
download | samba-fd97f48ba38cb6a737302dac5cf23239ce7059cc.tar.gz samba-fd97f48ba38cb6a737302dac5cf23239ce7059cc.tar.xz samba-fd97f48ba38cb6a737302dac5cf23239ce7059cc.zip |
r18846: Fix the same bug Volker noticed when marshalling/unmarshalling
SEC_ACE. "type" is also an enum that may be any size. Treat as
a uint8.
Jeremy.
Diffstat (limited to 'source/rpc_parse')
-rw-r--r-- | source/rpc_parse/parse_sec.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/rpc_parse/parse_sec.c b/source/rpc_parse/parse_sec.c index be789b2ef56..bc330622648 100644 --- a/source/rpc_parse/parse_sec.c +++ b/source/rpc_parse/parse_sec.c @@ -53,6 +53,7 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth) { uint32 old_offset; uint32 offset_ace_size; + uint8 type; if (psa == NULL) return False; @@ -62,9 +63,17 @@ BOOL sec_io_ace(const char *desc, SEC_ACE *psa, prs_struct *ps, int depth) old_offset = prs_offset(ps); - if(!prs_uint8("type ", ps, depth, (uint8*)&psa->type)) + if (MARSHALLING(ps)) { + type = (uint8)psa->type; + } + + if(!prs_uint8("type ", ps, depth, &type)) return False; + if (UNMARSHALLING(ps)) { + psa->type = (enum security_ace_type)type; + } + if(!prs_uint8("flags", ps, depth, &psa->flags)) return False; |