diff options
author | Stefan Metzmacher <metze@samba.org> | 2005-04-11 13:25:38 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:11:30 -0500 |
commit | 5eff721651a7d8a56891319dbcf3616a2a09be19 (patch) | |
tree | 2b82520e6b308b0a17fe33cb1315377f060ce241 /source4/librpc/ndr | |
parent | 0af9ba91794468d23eee47eb6e3092251df03adb (diff) | |
download | samba-5eff721651a7d8a56891319dbcf3616a2a09be19.tar.gz samba-5eff721651a7d8a56891319dbcf3616a2a09be19.tar.bz2 samba-5eff721651a7d8a56891319dbcf3616a2a09be19.zip |
r6294: - add obfuscate support, which is used in MAPI rpc's, (the ^= 0xA5 stuff),
based on a patch from j.kerihuel@openchange.org
- remove unused $ndr_flags argument for the ParseCompression*Start() function's
metze
(This used to be commit 27ccdd61822ba1a24244086522b9f8fe97fe0a78)
Diffstat (limited to 'source4/librpc/ndr')
-rw-r--r-- | source4/librpc/ndr/ndr_obfuscate.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/source4/librpc/ndr/ndr_obfuscate.c b/source4/librpc/ndr/ndr_obfuscate.c new file mode 100644 index 0000000000..4f875f19a7 --- /dev/null +++ b/source4/librpc/ndr/ndr_obfuscate.c @@ -0,0 +1,52 @@ +/* + Unix SMB/CIFS implementation. + + libndr obfuscate support (MAPI) + + Copyright (C) Stefan Metzmacher 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" + +/* + handle obfuscated subcontext buffers, which in midl land are user-marshalled, but + we use magic in pidl to make them easier to cope with +*/ +NTSTATUS ndr_pull_obfuscation(struct ndr_pull *ndr, uint8_t salt) +{ + uint32_t i; + + for (i=0; i<ndr->data_size; i++) { + ndr->data[i] ^= salt; + } + + return NT_STATUS_OK; +} + +/* + push a obfuscated subcontext +*/ +NTSTATUS ndr_push_obfuscation(struct ndr_push *ndr, uint8_t salt) +{ + uint32_t i; + + for (i=0; i<ndr->offset; i++) { + ndr->data[i] ^= salt; + } + + return NT_STATUS_OK; +} |