SAM database "set user info".
[samba.git] / source3 / rpc_parse / parse_misc.c
index 1656c39139d5e2ffd8e362225179eed51ed97dd4..64cbdef7169158b08a882ae6b1542388a0f778fe 100644 (file)
@@ -204,14 +204,45 @@ void smb_io_strhdr(char *desc,  STRHDR *hdr, prs_struct *ps, int depth)
        if (hdr->str_str_len > MAX_STRINGLEN) hdr->str_str_len = MAX_STRINGLEN;
 }
 
+/*******************************************************************
+creates a STRHDR2 structure.
+********************************************************************/
+void make_strhdr2(STRHDR2 *hdr, uint32 max_len, uint32 len, uint32 buffer)
+{
+       hdr->str_max_len = max_len;
+       hdr->str_str_len = len;
+       hdr->buffer      = buffer;
+}
+
+/*******************************************************************
+reads or writes a STRHDR2 structure.
+********************************************************************/
+void smb_io_strhdr2(char *desc, STRHDR2 *hdr, prs_struct *ps, int depth)
+{
+       if (hdr == NULL) return;
+
+       prs_debug(ps, depth, desc, "smb_io_strhdr");
+       depth++;
+
+       prs_align(ps);
+       
+       prs_uint32("str_str_len", ps, depth, &(hdr->str_str_len));
+       prs_uint32("str_max_len", ps, depth, &(hdr->str_max_len));
+       prs_uint32("buffer     ", ps, depth, &(hdr->buffer     ));
+
+       /* oops! XXXX maybe issue a warning that this is happening... */
+       if (hdr->str_max_len > MAX_STRINGLEN) hdr->str_max_len = MAX_STRINGLEN;
+       if (hdr->str_str_len > MAX_STRINGLEN) hdr->str_str_len = MAX_STRINGLEN;
+}
+
 /*******************************************************************
 creates a UNIHDR structure.
 ********************************************************************/
-void make_uni_hdr(UNIHDR *hdr, int max_len, int len, uint32 buffer)
+void make_uni_hdr(UNIHDR *hdr, int len)
 {
        hdr->uni_str_len = 2 * len;
-       hdr->uni_max_len = 2 * max_len;
-       hdr->buffer      = buffer;
+       hdr->uni_max_len = 2 * len;
+       hdr->buffer      = len != 0 ? 1 : 0;
 }
 
 /*******************************************************************
@@ -303,9 +334,9 @@ void smb_io_hdrbuf(char *desc,  BUFHDR *hdr, prs_struct *ps, int depth)
 /*******************************************************************
 creates a UNIHDR2 structure.
 ********************************************************************/
-void make_uni_hdr2(UNIHDR2 *hdr, int max_len, int len, uint16 terminate)
+void make_uni_hdr2(UNIHDR2 *hdr, int len)
 {
-       make_uni_hdr(&(hdr->unihdr), max_len, len, terminate);
+       make_uni_hdr(&(hdr->unihdr), len);
        hdr->buffer = len > 0 ? 1 : 0;
 }
 
@@ -427,19 +458,17 @@ void smb_io_buffer3(char *desc,  BUFFER3 *buf3, prs_struct *ps, int depth)
 /*******************************************************************
 creates a BUFFER2 structure.
 ********************************************************************/
-void make_buffer2(BUFFER2 *str, uint8 *buf, int len)
+void make_buffer2(BUFFER2 *str, const char *buf, int len)
 {
        ZERO_STRUCTP(str);
 
-       /* max buffer size (allocated size) */
+       /* set up string lengths. */
        str->buf_max_len = len;
        str->undoc       = 0;
-       str->buf_len = buf != NULL ? len : 0;
+       str->buf_len     = len;
 
-       if (buf != NULL)
-       {
-               memcpy(str->buffer, buf, MIN(str->buf_len, sizeof(str->buffer)));
-       }
+       /* store the string (wide chars) */
+       ascii_to_unistr(str->buffer, buf, len);
 }
 
 /*******************************************************************
@@ -673,16 +702,6 @@ void smb_io_dom_rid3(char *desc,  DOM_RID3 *rid3, prs_struct *ps, int depth)
        prs_uint32("unk     ", ps, depth, &(rid3->unk     ));
 }
 
-/*******************************************************************
-creates a DOM_RID4 structure.
-********************************************************************/
-void make_dom_rid4(DOM_RID4 *rid4, uint16 unknown, uint16 attr, uint32 rid)
-{
-       rid4->unknown = unknown;
-       rid4->attr    = attr;
-       rid4->rid     = rid;
-}
-
 /*******************************************************************
 makes a DOM_CLNT_SRV structure.
 ********************************************************************/