diff options
author | Matthew Chapman <matty@samba.org> | 1999-04-08 05:36:15 +0000 |
---|---|---|
committer | Matthew Chapman <matty@samba.org> | 1999-04-08 05:36:15 +0000 |
commit | 7b830350eb54dc9d357c115e12ddf9a0633527ac (patch) | |
tree | 0a4cf35e09a1992da6905ea523119f0b0699869f /source/rpc_parse/parse_misc.c | |
parent | 74d6dec25d6b44e26d3895f789f1958d5f4639ee (diff) | |
download | samba-7b830350eb54dc9d357c115e12ddf9a0633527ac.tar.gz samba-7b830350eb54dc9d357c115e12ddf9a0633527ac.tar.xz samba-7b830350eb54dc9d357c115e12ddf9a0633527ac.zip |
Mainly BDC-related changes.
* Added SEC_CHAN_BDC
* Propagate sec_chan into the various functions which change trust account
passwords, so they can be used for domain control and inter-domain
trusts.
* Fix for endianness problem reported by Edan Idzerda <edan@mtu.edu>. A
BUFFER2 is really a "unibuf" in my terminology and we should treat it as
such.
* Added some more common NT structures (BIGINT, BUFHDR2, BUFFER4).
* Added NET_SAM_SYNC (-> NetDatabaseSync2) RPC for account replication.
Still experimental and incomplete, with a few too many NULL security
descriptors lying around (must go look at Jeremy's SD code). Haven't
worked out password encryption yet either.
However, the XXX_INFO structures I've added to rpc_netlogon.h are quite
nice as they give some insight into how these objects are stored in the
SAM.
Diffstat (limited to 'source/rpc_parse/parse_misc.c')
-rw-r--r-- | source/rpc_parse/parse_misc.c | 99 |
1 files changed, 66 insertions, 33 deletions
diff --git a/source/rpc_parse/parse_misc.c b/source/rpc_parse/parse_misc.c index 64cbdef7169..51587e6d7a5 100644 --- a/source/rpc_parse/parse_misc.c +++ b/source/rpc_parse/parse_misc.c @@ -28,6 +28,21 @@ extern int DEBUGLEVEL; +/******************************************************************* +reads or writes a BIGINT structure. +********************************************************************/ +void smb_io_bigint(char *desc, BIGINT *bigint, prs_struct *ps, int depth) +{ + if (bigint == NULL) return; + + prs_debug(ps, depth, desc, "smb_io_bigint"); + depth++; + + prs_align(ps); + + prs_uint32("low ", ps, depth, &(bigint->low )); + prs_uint32("high", ps, depth, &(bigint->high)); +} /******************************************************************* reads or writes a UTIME type. @@ -311,6 +326,7 @@ void smb_io_hdrbuf_post(char *desc, BUFHDR *hdr, prs_struct *ps, int depth, ps->offset = old_offset; } } + /******************************************************************* reads or writes a BUFHDR structure. ********************************************************************/ @@ -332,6 +348,32 @@ void smb_io_hdrbuf(char *desc, BUFHDR *hdr, prs_struct *ps, int depth) } /******************************************************************* +creates a BUFHDR2 structure. +********************************************************************/ +void make_bufhdr2(BUFHDR2 *hdr, uint32 info_level, uint32 length, uint32 buffer) +{ + hdr->info_level = info_level; + hdr->length = length; + hdr->buffer = buffer; +} + +/******************************************************************* +reads or writes a BUFHDR2 structure. +********************************************************************/ +void smb_io_bufhdr2(char *desc, BUFHDR2 *hdr, prs_struct *ps, int depth) +{ + if (hdr == NULL) return; + + prs_debug(ps, depth, desc, "smb_io_bufhdr2"); + depth++; + + prs_align(ps); + prs_uint32("info_level", ps, depth, &(hdr->info_level)); + prs_uint32("length ", ps, depth, &(hdr->length )); + prs_uint32("buffer ", ps, depth, &(hdr->buffer )); +} + +/******************************************************************* creates a UNIHDR2 structure. ********************************************************************/ void make_uni_hdr2(UNIHDR2 *hdr, int len) @@ -456,6 +498,27 @@ void smb_io_buffer3(char *desc, BUFFER3 *buf3, prs_struct *ps, int depth) } /******************************************************************* +reads or writes a BUFFER4 structure. +********************************************************************/ +void smb_io_buffer4(char *desc, BUFFER4 *buf4, uint32 buffer, prs_struct *ps, int depth) +{ + if ((buf4 == NULL) || (buffer == 0)) return; + + prs_debug(ps, depth, desc, "smb_io_buffer4"); + depth++; + + prs_align(ps); + prs_uint32("buf_len", ps, depth, &(buf4->buf_len)); + + if (buf4->buf_len > MAX_BUFFERLEN) + { + buf4->buf_len = MAX_BUFFERLEN; + } + + prs_uint8s(True, "buffer", ps, depth, buf4->buffer, buf4->buf_len); +} + +/******************************************************************* creates a BUFFER2 structure. ********************************************************************/ void make_buffer2(BUFFER2 *str, const char *buf, int len) @@ -463,12 +526,11 @@ void make_buffer2(BUFFER2 *str, const char *buf, int len) ZERO_STRUCTP(str); /* set up string lengths. */ - str->buf_max_len = len; + str->buf_max_len = str->buf_len = len * 2; str->undoc = 0; - str->buf_len = len; - /* store the string (wide chars) */ - ascii_to_unistr(str->buffer, buf, len); + /* store the string */ + ascii_to_unibuf(str->buffer, buf, len); } /******************************************************************* @@ -910,35 +972,6 @@ void smb_io_clnt_info(char *desc, DOM_CLNT_INFO *clnt, prs_struct *ps, int dept } /******************************************************************* -makes a DOM_LOGON_ID structure. -********************************************************************/ -void make_logon_id(DOM_LOGON_ID *log, uint32 log_id_low, uint32 log_id_high) -{ - if (log == NULL) return; - - DEBUG(5,("make_logon_id: %d\n", __LINE__)); - - log->low = log_id_low; - log->high = log_id_high; -} - -/******************************************************************* -reads or writes a DOM_LOGON_ID structure. -********************************************************************/ -void smb_io_logon_id(char *desc, DOM_LOGON_ID *log, prs_struct *ps, int depth) -{ - if (log == NULL) return; - - prs_debug(ps, depth, desc, "smb_io_logon_id"); - depth++; - - prs_align(ps); - - prs_uint32("low ", ps, depth, &(log->low )); - prs_uint32("high", ps, depth, &(log->high)); -} - -/******************************************************************* makes an OWF_INFO structure. ********************************************************************/ void make_owf_info(OWF_INFO *hash, uint8 data[16]) |